Java中的null到底是什么?
2015-10-02 21:13
267 查看
让我们从下面这个语句开始:
1.下面这条语句到底干了什么?String x = null;首先回想一下,什么是变量什么是值,
一个通常的比喻就是,一个变量就像一个盒子。就像你能用盒子存储一些东西,你也可以使用一个变量来存储一个值。
当然,当你声明一个变量的时候,你需要设置它的类型。
Java语言中主要有两种类型:原始类型和引用类型。声明了原是变量类型的变量存储的是原始类型数据(8种),
声明了引用类型的变量存储的是引用。在这个例子中,初始化语句
String x=null;
声明了一个变量"x","x"存储的是String类型(8中原始类型之外的类型)的引用。在这里为空。
if x="abc",那么就会发生类似下面的事情:
2.到底null在内存中是什么样子的?
首先,null 并不是一个确切的对象实例,所以这里并没有给它分配内存。它只是一个值,这个值指明了,
这个对象的引用目前并没有引用任何对象。
From JVM Specifications:
The Java Virtual Machine specification does not mandate a concrete value encoding null.
3.到底x在内存中是什么?
现在知道了null是什么,而且我们也知道了,一个变量是包含某个值的一个存储的位置以及一个标识符。
那么它在内存的哪里呢?
栈中。
1.下面这条语句到底干了什么?String x = null;首先回想一下,什么是变量什么是值,
一个通常的比喻就是,一个变量就像一个盒子。就像你能用盒子存储一些东西,你也可以使用一个变量来存储一个值。
当然,当你声明一个变量的时候,你需要设置它的类型。
Java语言中主要有两种类型:原始类型和引用类型。声明了原是变量类型的变量存储的是原始类型数据(8种),
声明了引用类型的变量存储的是引用。在这个例子中,初始化语句
String x=null;
声明了一个变量"x","x"存储的是String类型(8中原始类型之外的类型)的引用。在这里为空。
if x="abc",那么就会发生类似下面的事情:
2.到底null在内存中是什么样子的?
首先,null 并不是一个确切的对象实例,所以这里并没有给它分配内存。它只是一个值,这个值指明了,
这个对象的引用目前并没有引用任何对象。
From JVM Specifications:
The Java Virtual Machine specification does not mandate a concrete value encoding null.
3.到底x在内存中是什么?
现在知道了null是什么,而且我们也知道了,一个变量是包含某个值的一个存储的位置以及一个标识符。
那么它在内存的哪里呢?
栈中。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序