套娃使用
public class Address { //城市 String city; String street; String zipcode; } public class User { //用户名、编号、住址 String name; int no; Address addr;//Address是引用数据类型,代表家庭住址 } public class OOTest02 { public static void main(String[] args) { User u = new User(); System.out.println(u.no); System.out.println(u.name); System.out.println(u.addr); u.no = 110; u.name = "tom"; u.addr = new Address(); u.addr.city = "BeiJing"; u.addr.street = "王府井"; u.addr.zipcode = "010"; System.out.println(u.no); System.out.println(u.name); System.out.println(u.addr); System.out.println(u.name + "居住在哪个城市:"+u.addr.city); System.out.println(u.name + "居住在哪个街道:"+u.addr.street); System.out.println(u.name + "的邮编:"+u.addr.zipcode); } }1.JVM(JAVA虚拟机)主要包括三块内存空间,分别是:栈内存、堆内存、方法区内存
2.堆内存和方法区内存各有一个、一个线程一个栈内存
3.方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈,方法执行结束后。该方法所属的空间释放,称为弹栈。
4.栈中主要存储的方法体当中的局部变量 5.方法的代码片段以及整个类的代码片段都被存储到方法区内存中,在类加载的时候代码段会载入 6.在程序执行过程中使用new运算符创建的java对象,存储在堆内存中,对象内部有实例变量,所以实例变量存储在堆内存中 7.变量分类:
局部变量【方法体中声明】成员变量【方法体外声明】 *实例变量【前面修饰符没有static】 *静态变量【前面修饰符有static】 8.静态变量存储在方法区中 9.三块内存中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。 10.自动垃圾回收机制,什么时候考虑将某个java对象的内存回收?当堆内存当中的java对象成为垃圾数据的时候,会被垃圾回收什么时候堆内存中的java对象会变成垃圾呢? :没有更多的引用指向他的时候,这个对象无法被访问,因为访问对象智能通过引用的方式访问A has a B【A对象中含有B对象的引用】 Student对象中含有no对象的引用:Student no