java 变量创建后在内存中的存储关系+空指针异常机理+图文解释
来源:互联网 发布:数据库视频百度云 编辑:程序博客网 时间:2024/06/15 18:34
String s1;String s2 = null;String s3 = "abc";String s4 = "";
一.变量创建后在内存中的存储关系
先看下栈内存中:
在代码中定义的s1、s2、s3、s4叫做变量名(也叫引用),在java内存中是放在栈内存中。在c里面它们又叫做指针(或指针变量)。指针的作用就是存放堆内存中的内存地址。
注:这里的变量名、引用和指针是一个概念,只是不同的语言里叫法不一样,后面我们称呼为指针。
我们再看下堆内存:
一般地,申明了一个变量后,对它进行初始化,也就是赋值,如上述代码中的s3,此时才会在堆内存中给它分配一块空间(可以理解为容器)用来存储值,而这块空间(容器)的名字就叫内存地址。如上图右边方框里的圆框,圆框就是一块储存空间(容器),这个空间(容器)里面放的值就是s3变量的值;内存地址 0x111H 就是这个容器的名字。
而变量名也就是指针也相当于这么一个容器,变量名或称为指针是这个容器的名字。而这个容器里放的是堆内存中的内存地址,也就是堆内存中容器的名字。
这样我们就可以通过变量名也就是指针找到一个具体值了。具体流程是这样:
1.先在栈内存中找到变量名中存放的内存地址;
2.再到堆内存中寻找这个内存地址里存放的值。
也许看到这里你会觉得为什么要知道这种存放方式呢?掌握变量在内存中的存储关系至关重要,在后面的学习中会经常碰到空指针异常就可以从这里得到解释了。
下一节:""与null区别 空指针异常
1 0
- java 变量创建后在内存中的存储关系+空指针异常机理+图文解释
- 变量在内存中的存储
- 变量在内存中的存储
- C/C++变量在内存中的存储
- C++变量在内存中的存储区域
- c++变量在内存中的存储区域
- C++变量在内存中的存储区域
- C++变量在内存中的存储区域
- C/C++ 变量在内存中的存储
- c++变量在内存中的存储区域
- 变量在内存中的存储位置
- float变量在内存中的存储
- 变量在内存中的存储原则
- float 变量在内存中的存储方式
- PHP变量在内存中的存储方式
- java中变量在内存中的分配
- java中变量在内存中的分配
- JAVA变量在内存中的分配
- 呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜
- Projective Dynamics: Fusing Constraint Projections for Fast Simulation
- hello-jni导入编译错误
- C-6.结构体
- Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam
- java 变量创建后在内存中的存储关系+空指针异常机理+图文解释
- FreeRTOS系列第3篇---FreeRTOS移植指南
- Unreal引擎术语表
- Android之不能静态注册的系统广播(5个)
- ""与null区别 空指针异常机理
- 0014.trait的混入
- 0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
- 【Leetcode】Binary Tree Inorder Traversal
- 0016.scala中的包