成员变量和局部变量的区别
1、初始化情况
成员变量
- 整型(byte、short、int、long):0
- 浮点型(float、double):0.0
- 字符型(char):0
- 布尔型(boolean):false
- 引用数据类型(类、数组、接口):null
局部变量
- 没有默认初始值
- 调用前需要赋值
2、位置不同
- 局部变量:声明在方法内、方法形参、代码块、构造器形参...
- 成员变量:直接定义在类中
5、构造器详解
public class 类名(){}
- 构造方法名必须和类名相同,且没有返回值
- 可以定义多个构造器
- 新建的类默认带一个无参构造函数(权限和类的权限一致)
alt + insert
生成构造函数快捷键- 修饰符 + 构造器名
- 当构造器的首行没有显式的声明this(形参列表)或super(形参列表),则默认调用的是父类中空参的构造器:super()
构造器的作用
- 使用new关键字创建对象时必须要有构造器
- 为类的成员变量初始化
- 注意:定义有参构造后,如果想使用无参构造,需要显示的定义一个无参构造
总结属性复制的先后顺序
- 默认初始化 -> 显式初始化/在代码块中赋值 -> 构造器中赋值 -> "对象.方法" 或 "对象.属性"赋值
- 显式初始化和在代码块中赋值的先后顺序取决于它们在程序中的顺序
6、创建对象内存分析
- 栈:
- main方法中的所有内容
- main方法(在栈底)
- 对象/引用变量名(指针)
- 基本变量
- 回收:用完就会消失
- 堆:
- main函数之外的东西,包括静态区(全局区)
- 实例化(new出来的)对象/数组(地址)
- 回收:用完之后靠垃圾回收机制不定期自动消除
7、总结
类
- 包括属性(成员变量)和方法(成员函数)
- 属性有默认初始化
- 数字:0 0.0
- char:u000
- boolean: false
- 引用:null
- 对象的属性 对象名.属性
- 对象的方法 对象名.方法()