Java之面向对象


this 关键字

this指代当前new的对象

  1. 作用:

    1. 在构造器的首行通过this(实参)调用本类中其他构造器构造器不能相互调用。

    2. 区分同名成员与局部变量问题默认会发生就近原则,可以通过this.调用成员,否则默认找局部。如果不存在局部与成员同名问题,指代成员的this.可以省略

  2. 注意:

    1. this在构造器中使用,默认指代当前new的对象

    2. 在成员方法中的this,默认指代调用成员方法的对象

    3. this不能使用在static方法中

 

static 静态的

  1. 成员修饰符,可以修饰成员内容,不可以修饰局部

  2. static修饰的成员变量与成员方法使用方式:

    1. 对象.静态变量名 对象.静态方法名(参数列表)

    2. 类名.静态变量名 类名.静态方法名(参数列表)

  3. 注意: 成员是属于对象的,需要跟随对象使用。静态的是属于类的,可以随类名使用

  4. 成员 :

    被static修饰的是类的成员 变量-> 静态变量|类变量 方法-> 静态方法|类方法 没有被static修饰 的是实例成员 变量-> 实例变量 方法-> 实例方法

  5. 初始顺序 : 先静态后成员 成员存在与对象的堆内存中,new对象了才开辟堆内存,才在对象的堆内存中存在成员 静态变量会给加载到静态区中,每个类的静态变量只有一份,静态内容是当前类所有对象共享的,独一份的,成员内容是属于每一个对象的,有几个对象就存在几份

  6. 静态的使用注意 :

    1. 成员方法中的this默认指代当前调用成员方法的对象

    2. 成员方法中可以直接使用成员可以直接使用静态

    3. 静态方法中可以直接使用静态内容需要通过对象使用成员

    4. 在静态方法中不能使用this,因为冲突

 

new关键字

  1. new关键字做的事:

    1. 堆中为对象开辟空间,成员变量跟随对象进入到堆内存并附默认值

    2. 调用构造器为对象初始化信息

    3. 将地址返回给引用

  2. 构造器|构造函数|构造方法 :

    1. 作用: 为对象初始化信息,为对象的属性赋值,不是用来创建对象的,new能够创建对象

    2. 调用: 只能跟随new一起使用

    3. 定义: 修饰符 类名(参数){ 初始化信息代码; }

    4. 注意:

      1. 构造器可以实现重载

      2. 如果没有显示定义任何构造器,编译器会自动默认提供一个空构造(没有参数)

      3. 如果存在显示定义构造器,编译器都不会再提供任何构造器

      4. 至少实体类中自定义一个空构造,根据需求提供带参

 

块{ }

  1. 自成作用域

  2. { }定义在方法中|语句块中 : 局部代码块|普通语句块

  3. { }定义在类中方法外 : 构造块 |成员代码块

  4. static{ }定义在类中方法外 : 静态块

  5. 同步代码块 : 多线程时候讲

  6. 注意 :

    1. 构造块中的代码先于构造器代码之前执行,因为在编译期间构造块代码会被编译到要执行的构造器内部,构造器代码之前

    2. 如果存在多个构造块,从上到下依次执行

    3. 静态块中的内容在类第一次加载完成之后就执行,并且只执行一次,先与main方法执行

    4. 如果存在多个静态块,从上到下依次执行

  7. 执行顺序 : 静态块 --> main ---> 构造块 --> 构造器

 

Debug调试工具

  1. 作用:

    1. 追踪程序的执行流程

    2. 定位异常问题出现的位置

    3. 执行过程中方便观察变量的变化

    4. 通过追踪程序的执行流程学习一些第三方框架的源码

  2. 步骤:

    1. 设置断点:debug模式运行的时候停在第一个断点位置,后续的执行有程序员手动控制

    2. Step over F8 : 下一步跳过|略过 如果下一步是方法的调用,直接略过,不跟随方法内部执行 Step into F7 : 下一步如果是方法的调用,进入方法跟随一起执行 要求是自定义方法才会进入跟随,jdk提供方法不会进入 Force Step into alt+shift+F7 : 强制进入,如果下一步是jdk方法的调用,进入跟随执行 Step out shift+f8 : 跳出到方法调用的下一步 Run to Cursor : 运行的到光标所在位置