一、类的成员构成
1.成员变量(属性)
- 语法格式
修饰符 数据类型 属性名 = 初始化值 ;
ps:修饰符有常用的权限修饰符(private、缺省、protected、public)和static、final等
2.成员方法(函数)
- 语法格式
修饰符 返回值类型 方法名(形参列表){
方法体程序代码
return 返回值;
}
3.构造器(构造方法)
- 语法格式
修饰符 类名 (参数列表) {
初始化语句;
} - 注意
1)一旦显式定义了构造器,则系统不再提供默认构造器
2)一个类可以创建多个重载的构造器
3)父类的构造器不可被子类继承
4)不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
4.代码块(初始化块)
- 作用:对Java类或对象进行初始化。static代码块通常用于初始化static的属性。
- 分类:静态代码块和非静态代码块
静态代码块是用static 修饰的代码块, 不可以调用非静态的属性和方法,静态代码块随着类的加载而加载,且只执行一次。
非静态代码块是没有static修饰的代码块,除了调用非静态的结构外,还可以调用静态的变量或方法,每次创建对象的时候,都会执行一次。且先于构造器执行。 - 注意
1)一个类中代码块若有修饰符,则只能被static修饰。
2)静态代码块的执行要先于非静态代码块。
3)同类型按照从上到下的顺序依次执行
5.内部类
当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。
二、类的属性赋值先后顺序
1.默认初始化
默认值如下图:
2.显式初始化、多个初始化块依次被执行
3.构造器中初始化
4.通过“对象.属性”或“对象.方法”,可多次给属性赋值
三、内存解析
- 栈(指虚拟机栈)
用于存储局部变量
局部变量表存放了编译期可知长度的各种基本数据类型和对象的引用。方法执行完,自动释放。 - 堆
用于存放对象实例,new出来的 - 方法区
用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。