Java 中 == 比较的是什么?
2016-03-21 10:43
471 查看
1、对于对象引用类型:“==”比较的是对象的内存地址。
例子:
显然,尽管 a 与 b 对象的值相同,但是在内存中的地址是不同的,即两个对象是不一样的。
再看一个例子:
这是因为常量池的存在。而运行时常量池其实是属于方法区的一部分。通俗的说,c 和 d 其实都是都是指向 “aa”这个常量。
但是这里要注意,对于Integer对象来说,其能存储的范围为(-128~127),超过范围则存储到堆内存中。可参见:/article/9415793.html
2、对于基本类型数据,其实比较的是它的值。
参考:
http://blog.chinaunix.net/uid-23781137-id-3436455.html
/article/1371499.html
例子:
public class ArrayTest { public static void main(String[] args){ String a = new String("aw"); String b = new String("aw"); System.out.println(a==b);//false } }
显然,尽管 a 与 b 对象的值相同,但是在内存中的地址是不同的,即两个对象是不一样的。
再看一个例子:
public class ArrayTest { public static void main(String[] args){ String a = new String("aw"); String b = new String("aw"); String c= "aa"; String d= "aa"; System.out.println(a==b);//false System.out.println(c==d);//true } }
这是因为常量池的存在。而运行时常量池其实是属于方法区的一部分。通俗的说,c 和 d 其实都是都是指向 “aa”这个常量。
但是这里要注意,对于Integer对象来说,其能存储的范围为(-128~127),超过范围则存储到堆内存中。可参见:/article/9415793.html
2、对于基本类型数据,其实比较的是它的值。
参考:
http://blog.chinaunix.net/uid-23781137-id-3436455.html
/article/1371499.html
相关文章推荐
- Java之Property-统获取一个应用程序运行的次数
- Spring MVC中Session的正确用法之我见02
- Java多线程(一)
- SpringMVC存取Session的两种方法01
- 继承,抽象,接口
- Myeclipse 2015 stable 2.0 完美破解方法
- java使用正则表达式——实例
- Java虚拟机学习 - 类加载机制
- Java day07 多态示例 主板接口
- Java多线程系列--“JUC锁”01之 框架
- java实现base64编码
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解
- Java排序算法(四)--直接插入排序(InsertSort)
- Java中数组的问题(三)
- Java基础之OOM
- Java中关于//TODO的好处
- java 图片压缩
- Eclipes Java项目打包成jar文件的案例分析
- 找到一个关于seam详细介绍的网址
- Java static——拾遗