java 变量创建后在内存中的存储关系+空指针异常机理+图文解释

原创 2015年11月21日 08:37:43

String s1;
String s2 = null;
String s3 = "abc";
String s4 = "";


一.变量创建后在内存中的存储关系

先看下栈内存中:

在代码中定义的s1、s2、s3、s4叫做变量名(也叫引用),在java内存中是放在栈内存中。在c里面它们又叫做指针(或指针变量)。指针的作用就是存放堆内存中的内存地址

注:这里的变量名、引用和指针是一个概念,只是不同的语言里叫法不一样,后面我们称呼为指针。


我们再看下堆内存:

一般地,申明了一个变量后,对它进行初始化,也就是赋值,如上述代码中的s3,此时才会在堆内存中给它分配一块空间(可以理解为容器)用来存储值,而这块空间(容器)的名字就叫内存地址。如上图右边方框里的圆框,圆框就是一块储存空间(容器),这个空间(容器)里面放的值就是s3变量的值;内存地址 0x111H 就是这个容器的名字


而变量名也就是指针也相当于这么一个容器,变量名或称为指针是这个容器的名字。而这个容器里放的是堆内存中的内存地址,也就是堆内存中容器的名字


这样我们就可以通过变量名也就是指针找到一个具体值了。具体流程是这样:

1.先在栈内存中找到变量名中存放的内存地址;

2.再到堆内存中寻找这个内存地址里存放的值。


也许看到这里你会觉得为什么要知道这种存放方式呢?掌握变量在内存中的存储关系至关重要,在后面的学习中会经常碰到空指针异常就可以从这里得到解释了。


下一节:""与null区别    空指针异常


版权声明:本文为博主原创文章,欢迎转载。

""与null区别 空指针异常机理

String s1; String s2 = null; String s3 = ""; String s4 = "abc"; 二、空指针异常机理 1.什么叫空指针异常: 空指针的概念:...

Android-Application被回收引发空指针异常分析(消灭全局变量)

Application被回收引发空指针异常
  • jhope
  • jhope
  • 2016年11月25日 11:37
  • 705

SharedPreferences获取时报空指针异常,以及普通类中使用SharedPreferences存储数据

最近在开发中碰到用SharedPreferences 存储一些临时数据的时候发现这样一个问题:在Activity中使用SharedPreferences似乎很简单,只要把获得 SharedPerfer...

当心空指针异常——将头像存储到T_User用户信息表里

写在前面的话:     找工作已经告一段落,整天无所事事找不到目标的日子也被涪陵之行治愈,现在的我只剩下满满的正能量!吼吼,俺要努力做课题,为毕设做准备啦!一想到明年就能自食其力了就开心,钱钱啊~嘿嘿...

用Java的DOM读取XML文档时遇到空指针异常...

用Java的DOM读取XML文档时遇到了空指针异常

JAVA中的空指针异常(转载)

标签:  it 分类: Java java中的空指针异常java.lang.NullPointerException是最麻烦的,通过个人日常总...

在Java中避免空指针异常(Null Pointer Exception)

空指针异常(Null Pointer Exception)是我们平时最容易碰到的,也是最令人讨厌的异常。本文介绍如何避免出现空指针异常。 首先我们看如下的示例 private Boolean isFi...

java中的NullPointerException(空指针异常)

java 空指针异常
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 变量创建后在内存中的存储关系+空指针异常机理+图文解释
举报原因:
原因补充:

(最多只允许输入30个字)