分析清楚内存,对代码的运行更加的清楚!
对以下简单的代码的内存分析.
package com.object.test1;
import com.object.object.Person;
//1.Test.class加载进方法区
public class Test1 {
//2.main方法进栈
public static void main(String[] args) {
//3.Person.class加载进方法区
//4.new Person(23,"zmh")进堆,并且通过有参构造,把值赋给成员变量
Person p = new Person(23,"zmh");
//5.p.toString()进栈
System.out.println(p.toString());
//6.p.toString()出栈
//7.p.speak()方法进栈,局部变量在speak()中
p.speak();
//8.p.speak()出栈
}
//9.main方法出栈
}
package com.object.object;
public class Person {
//成员变量
private int age;
private String name;
//空参构造
public Person() {
super();
}
//有参构造
public Person(int age, String name) {
super();
this.age = age;
this.name = name;
}
//get set方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//成员方法
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
public void speak(){
int age = 100;
System.out.println(age); //就近原则
}
}