1、堆heap:对象生存空间,gc管理
2、栈stack:方法调用变量生存空间
3、实例变量:声明在类里,每个类的对象都有独立的该变量
4、局部变量:声明在方法体里面,声明周期只限于方法执行期间
5、非基本类型的变量是保存对象的引用,而不是对象本身。对象本身是放在堆上的。局部变量会放在栈上。
6、不管是实例变量还是局部变量,对象本身都在堆上
7、实例变量在初始化的时候才会给他分配堆内存
8、构造函数没有返回值,可以有与类同名的方法
9、自己写了有参构造函数,无参构造函数就不会自动生成了
10、重载构造函数:区别在于,参数的类型和顺序
11、自己的构造函数里面没加super(),编译器会自动加上一个无参数的super()
12、先执行父类的构造方法,后执行子类的构造方法,小孩不能先于父母出生
13、this()只能调用同一个类中的其它构造函数,只能用在构造函数中,必须是第一行语句,super和this不能同时用
14、注意区分,局部变量(方法里面的), 实例变量(类里面的),引用变量(对实例化的对象的引用)
15、只要引用还活着,对象就也活着:防止内存泄漏:不要持有引用,活着及时断开引用
16、没有引用的对象,会被gc收回。将引用设置为null,或者将引用指向其他对象,原来的对象就会被收回
17、Dog d = new Dog():d是引用,new Dog()是创建的对象,=号是将引用和对象联系起来