复制Javapackage com.test.newobj;
/**
* 对象的创建与使用
* 实验结果:
* com.test.newobj.Person@1b6d3586
* null
* 0
* 张三
* 21
* 张三吃苹果
* 张三在睡觉
*/
public class newObj {
public static void main(String[] args) {
/* 创建Person对象*/
Person p = new Person();
System.out.println(p);
System.out.println(p.name);
System.out.println(p.age);
p.name="张三";
p.age=21;
System.out.println(p.name);
System.out.println(p.age);
p.eat("苹果");
p.sleep();
}
}
class Person {
String name; /*null*/
int age; /*0*/
public void eat(String food) {
System.out.println(name + "吃" + food);
}
public void sleep() {
System.out.println(name + "在睡觉");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
程序分析:
首先将newObj.class加载到方法区,然后他的方法main就会加载到栈内存中;
然后将Person.class加载到方法区 ,然后将成员变量和成员方法加载到方法区,
语句:Person p= new Person();
将将成员变量(赋初始值)和成员方法加载到方法区;
生成一个地址值,然后将 地址值 赋值给引用变量p;
然后既可以通过这个地址调用Person的 成员变量和成员方法了;
语句:p.eat("苹果");
就会把eat()方法加载到栈中,执行,执行之后就会出栈,sleep()和mian()类似;
主方法出栈后,然后堆中的 对象创建的堆内存池没有了指向他的引用,他就会变成一个垃圾,然后就会被回收(java会自动回收垃圾)。