这里的o只是Point类的一个引用,是存储在栈中的,“必须使用new关键字创建对象”是在堆中开辟一块空间 将对象实例存储在这块空间中,之后再通过栈中引用来引用这个实例,你可以试试直接输出“ private Point o;”中的o,会抛出空指针异常,因为你这里只是声明了一个引用,它还没有引用堆中的对象
只这样private Point o; o还没初始化
只是声明o是Point类型的成员变量
private Point o;//这是声明对象,不是创建对象,只是在栈内存定义了这么一个引用,也就是一个指针,大概占4个字节 o = new Point();//这才是创建对象,在堆内存分配内存空间
将对象实例存储在这块空间中,之后再通过栈中引用来引用这个实例,你可以试试直接输出“ private Point o;”中的o,会抛出空指针异常,因为你这里只是声明了一个引用,它还没有引用堆中的对象
o还没初始化
o = new Point();//这才是创建对象,在堆内存分配内存空间
1.在堆内存中开辟一块空间,2.然后在栈内存中创建一个引用名 3. 最后才把引用名指向之前开辟的空间的地址
声明一个楼主``Person lz=null;//需要赋予一个初值··null
这里换成了 private Point o;是一个道理。
请教!