对象内存分析
对象实例化操作初步分析
Java之中类属于引用数据类型,引用数据类型最大的困难之处在于要进行内存的管理,同时在进行操作的时候也会有内存关系的变化。
所以本次针对于之前的程序的内存关系进行一些简单的分析。
class Person{
int age;
String name;
public void intorduce() {
System.out.println("age= "+age+" name= "+name);
}
}
public class xxx {
public static void main(String[] args) {
Person per = new Person();
per.age=17;
per.name="sakura";
per.intorduce();
}
}
如果要进行内存分析,那么首先给出两块最为常用的内存空间:
- 堆内存:保存的是对象的具体信息,在程序之中堆内存空间的开辟是通过new完成的;
- 栈内存:保存的是一块堆内存的地址,即:通过地址找到堆内存,而后找到对象内容,但是为了分析简化起见 将简单的理解为:对象的名称保存在了栈内存之中。
Person per = new Person();
另一种实例化
Person per = null;
per = new Person();
需要特别引起注意的是,所有的对象在调用类中的属性和方法时必须要实例化完成后才可以执行。
错误的代码
Person per = null;
per.age=17;
per.name="sakura";
per.intorduce();
代码只是声明了对象,但是并没有为对象进行实例化,所以此时无法调用。
Exception in thread "main" java.lang.NullPointerException