我们于2021/07/08 的学习目标是:构造器,核心任务为:
1、学习技术:
1)、构造器
2)、this
3)、static
4)、block
5)、debug代码调试工具
2、文档总结
1)、构造器
Constructor意为构造器,作用是为对象初始化信息(第一次赋值),为对象的成员在创建对象的同时赋值。
跟随new一起使用。
定义:
修饰符 类名(参数列表){
方法体;
}
不需要返回值类型,也没有void
可以根据需要定义return关键字,作用提前结束方法
构造器的名字与类名保持一致
特点:
构造器也是特殊的方法,定义多个重载构造器,构造器的名字都与类名保持一致,参数列表不同就能构成重载构造器
如果没有显示的定义构造器,编译器会自动为类提供一个空构造
如果存在显示定义的构造器,编译器不会提供任意构造器
先创建对象后赋值
创建对象的同时赋值,为创建赋值更早,在创建对象的时候就能确定成员的值,跟简单
为了所定义的所有的JavaBean,必须 至少一共一个空构造
2)、this
this 关键字
指代当前对象(new的对象),指向存储所有指向的对象的地址
构造器的首行调用本类中的其他构造器
this(参数列表)
区分同名的成员与局部的问题
默认就近原则
如果出现同名问题,想要指代调用成员,通过this.成员-->因为this指代对象,通过对象调用成员
如果没有同名问题,可以省略this.调用成员
在构造器中使用this,默认指代当前new的对象,存储的是this的对象的地址
在的成员方法中使用this,this在成员方法中默认指代当前调用成员方法的对象
注意:
1.多个构造器之间不能相互调用,否则无法停止调用
2.在static修饰的内容中不能使用this
3)、static
Static意为静态的,用作以下修饰:
成员修饰符 : 只能修饰成员位置的内容,不能修饰局部
修饰变量 : 静态变量|类变量
修饰方法 : 静态方法|类方法
修饰块 : 静态块
修饰类 : 静态内部类
静态内容的使用:
1.跟随类名使用
类名.静态变量名
类名.静态方法名(参数列表);
2.跟随对象使用
引用.静态变量名
引用.静态方法名(参数列表);
成员是是属于对象的
静态的是属于类的
成员变量 :
被static修饰的变量 --> 静态变量|类变量
不被static修饰的变量 --> 实例变量
成员方法:
被static修饰的方法 --> 静态方法|类方法
不被static修饰的方法 --> 实例方法
注意:
this只能使用在非静态环境中
在非静态方法中使用this,默认指代当前调用实例方法的对象
静态内容是独一份的,静态变量存在与静态区中,多个对象共享的资源
成员内容跟随对象存在与对象的堆内存中,多个对象,就有多份成员
初始加载顺序: 先静态后成员
静态内容在类第一次加载完成之后就会进行初始化
成员变量必须在执行到new对象的时候,才会存在对象的堆内存,在对象的堆内存中才会有成员变量
4)、block
{}自成作用域
分类 | 定义 | 执行时机 | 作用 |
局部代码块|普通语句块 | {}定义在方法中 | 跟随方法的调用而执行 | 1)作用域看待 2)语义化 |
构造块 | {}定义在类中方法外 | 跟随new一起使用 | 1)成员内容的初始信息,比构造器中的代码跟早执行 2)对对象的某些内容进行初始 |
静态块 | static修饰{},定义在类中方法外 | 在类第一次加载完成之后执行 | 1) 会为静态内容进行初始化 2) 信息的配置,资源的加载 |
同步块 |
构造块中的代码会先于构造器中的代码之前执行
如果存在多个构造块,会从上到下一次执行
静态块在类第一次加载完成之后执行,并且仅会执行一次
如果存在多个静态块,会从上到下一次执行
执行顺序:
静态块-->main-->创建对象 --> 构造块 --> 构造器
5)、debug代码调试工具
作用:
1.追踪程序的执行流程
2.定位异常出现的位置
3.观察程序运行期间变量变化的情况
4.根据程序的执行流程学习第三方框架的源码
步骤:
- 打断点
- Debug执行
名称 | 快捷键 | 描述 |
Step over 下一步跳过 | F8 | 如果遇到方法的调用,不进入,直接跳过进入下一行 |
step into 步入 | F7 | 如果下一步遇到自定义方法的调用,进入方法跟随执行,如果是jdk提供的方法,不会进入 |
Force step into 强制步入 | alt+shift+F7 | 如果是jdk提供的方法,会强制进入跟随执行 |
step out 跳出 | shift+F8 | 如果执行在方法的调用中,下一步直接调出到方法调用的位置 |
Run to Cursor 运行到光标所在位置 |