本文为学习笔记 能力有限 如有错误望指正。谢谢!!!
在内存分析这篇笔记中总结了堆栈等问题,在这里就不再赘述。
当我们在java代码中敲下 Person Tom = new Person(1,25); 时在内存里到底发生了什么?
calss Person {
int sex;
int age = 20;
Person (int _sex, int _age) {
sex = _sex;
age = _age;
}
}
public class test {
public static void main(String[] args) {
Person Tom = new Person(1,25);
}
}
Person 是我们新定义的一个类,在该类中存在一个构造函数与该类同名,该构造函数对属性age ,sex 进行初始化。
Person Tom 在内存的栈中定义一个引用类型的变量变量名为Tom。
new Person (1,25) 在内存的堆中开辟一段空间存储Person 类型的属性 ,并调用Person(int _sex,int _age)构造函数对age 和 sex初始化。注:_sex 和 _age 在栈中
其中“=”的意义在于将对象和应用联系起来。
问:为什么堆中只存在属性没有方法?
答:一般情况对象的不同是属性的不同,方法相同。这样做有利于代码的重用和节省内存