对象实例化操作初步分析
Java之中类属于引用数据类型,引用数据类型最大的困难之处在于要进行内存的管理,同时在进行操作的时候也会发生有内存关系的变化,所以本次针对于之前的程序的内存关系进行一些简单分析。
范例:以下面的程序为主进行分析
public static void main(String args[]){
Person per = new Person(); //声明对象
per.name = "张三"; //实例化对象
per.age = 18;
per.tell(); //进行代码调用
}
如果要进行内存分析,那么首先给出两块最为常用的内存空间:
- 堆内存:保存的是对象的具体信息,在程序之中堆内存空间的开辟是通过new完成的;
-
栈内存:保存的是一块堆内存的地址,既:通过地址找到堆内存,而后找到对象内容;
清楚了以上的对应关系之后,那么下面就针对于之前的程序进行分析:
![](https://img.haomeiwen.com/i11837817/a427fbac6b6fa138.png)
在之前进行分析的时候可以发现对象的实例化有两种语法:一种是之前使用的声明并实例化对象,另外一种就是分步完成,所以下面针对分步的内存操作进行分析。
范例:定义程序代码
public static void main(String args[]){
Person per = null;
per = new Person(); //声明并实例化对象
per.name = "张三";
per.age = 18;
per.tell(); //进行代码调用
}
![](https://img.haomeiwen.com/i11837817/491250a82aff693e.png)
需要特别引起注意的是,所有的对象在调用类中的属性或方法的时候必须要实例化完成后才可以执行。
范例:错误的代码
public class JavaDemo{
public static void main(String args[]){
Person per = null;
//per = new Person(); //声明并实例化对象
per.name = "张三";
per.age = 18;
per.tell(); //进行代码调用
}
}
Exception in thread "main" java.lang.NullPointerException
at com.java.demo.JavaDemo.main(JavaDemo.java:13)
代码之中只是声明了对象,但是并没有为对象进行实例化,所以此时无法调用。而此时程序中出现的NullPointerException(空指向异常)就是在没有在堆内存开辟后时所产生的问题,并且只有引用数据类型存在有此问题。
网友评论