对象内存分析

对象实例化操作初步分析

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

而此时程序出现的NullPointerException(空指向异常)就是在没有在堆内存开辟后时所产生的问题,并且只有引用数据类型存在此问题

最新文章

  1. 对B+树与索引在MySQL中的认识
  2. WIN10 CMD 启动虚拟WIFI
  3. 一个好用的C#类型转换器
  4. sudo -u hdfs hdfs balancer出现异常 No lease on /system/balancer.id
  5. struts.custom.i18n.resources国际化
  6. [ActionScript3.0] 逻辑或"||=" ,等于"=="和全等于"==="
  7. HTML中的API
  8. 【POJ】2828 Buy Tickets
  9. C#中启动外部应用程序
  10. 使用myfocus制作焦点图
  11. FTP创建与操作
  12. POJ1422 Air Raid 【DAG最小路径覆盖】
  13. RelativeLayout各个属性
  14. hdu_2825_Wireless Password(AC自动机+状压DP)
  15. PHP 防恶意刷新实现代码
  16. zoj 1108 FatMouse's Speed 基础dp
  17. 操作系统,时间片轮转算法的C语言实现Round Robin
  18. 洛谷P3740 【[HAOI2014]贴海报】
  19. Task Asnyc 异常问题
  20. snmpwalk命令

热门文章

  1. 解决报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshaketimeout
  2. 每天进步一点点------创建Microblaze软核(三)
  3. DockerToolbox安装docker - Windows 10
  4. swagger2 常用注解的使用
  5. codeforces C. Primes and Multiplication(快速幂 唯一分解定理)
  6. c++基础语法规则
  7. Bugku-CTF之江湖魔头(学会如来神掌应该就能打败他了吧)
  8. AcWing 849. Dijkstra求最短路 I 朴素 邻接矩阵 稠密图
  9. mac登录窗口出现白框问题解决
  10. P2023 [AHOI2009]维护序列 区间加乘模板