在new对象使 执行构造器 是第二步执行 执行构造器 初始化信息 为对象属性赋值
构造器是一个特殊的方法
作用:为对象初始化信息,为对象的属性赋值调用:只能跟new一起使用定义: 修饰符 类名 (参数){}注意:
- 构造器可以实现重载 如果没有显示定义的任何构造器,编译器会自动提供一个默认的空构造器如果定义显示的构造器,编译器都不会再提供任何构造器
2.this关键字
this 指代当前new对象
作用:
- 在构造器的首行通过this(实参) 匹配当前本类的其他构造器。构造器首行不能相互调用。区分成员变量和局域变量 默认是就近原则 如果不存在局部变量和成员变量冲突问题,我们指代成员this.可以省略。在成员方法中的this ,默认指代调用成员方法的对象 。在static修饰的方法中 不能使用this。
3.static
static :
1.成员修饰符 (静态变量|类变量) 不可以修饰局部
2.修饰方法(静态方法|类方法)
3.修饰块
4.修饰类
特点:
1.成员是属于对象的,需要跟随对象使用。
2.静态的是属于类的,可以根据类名使用。
3.没有被static修饰的是变量是实例变量 被static修饰是静态变量。
静态内容是属于类的,在类第一次加载完成之后就初始化,是在方法区当中的。 成员存在于对象的堆内存中,new对象才开辟堆内存中存在成员。静态变量会存在静态 区中,每个类的静态变量只有一份。初始顺序:先静态后成员。
静态的使用方法
成员方法的this默认指代当前条用成员方法的对象。
成员方法中可以直接使用成员 可以直接使用静态。
静态方法中可以直接使用静态内容 通过对象使用成员
在静态方法中不能使用this 因为可能冲突。不知道调用这个方法是不是该对象。
4.块(block)
分类:
1.定义在方法中 局部代码块|普通代码块 执行时机 跟随方法 {}
2.定义在类中方法外 构造块|成员代码块 执行时机:跟随new 构造快先于构造器代码执行。 在编译期间构造快代码会被编译到构造器内部要执行的构造器代码的上面,如果有多个构造块,从上到下依次执行。用处:在所有构造器中都要执行 可以使用构造块。
3.通过static修饰{} 定义在在方法外:静态块 执行时机: 类第一次加载完成之后执行并且只执行一次,先于main方法执行,如果存在多个静态块从上到下依次执行。 用处:静态内容的初始化,不用手动调用。
执行顺序: 静态块>main>构造块>构造函数
4.同步代码块:多线程
注意:在构造块中 会编译在最后执行的构造函数的最上面
编译后的字节码文件反编译:



