首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一个基本有关问题关于引用的

2012-10-31 
一个基本问题关于引用的问:int a 1Integer b new Integer(1)System.out.println(ab)结果为什么是

一个基本问题关于引用的

问:

int a = 1;
Integer b = new Integer(1);
System.out.println(a==b);
结果为什么是true
但是
String c = "abc";
String d = new String("abc");
System.out.println(c == d);
结果就是false了?
请说一下具体的原因

?

?

答:

==在java中的作用是比较,比较的是左右两个操作数的“直接值”,所谓直接值,对基本类型而言就是其值本身,比如int a = 1,就是1;对引用类型而言,就相当于“内存地址”,引用对象内部所包含的内容(比如String的字符串)不是它所关心的。

Integer对象有在一定范围内自动拆箱概念,为什么会自动拆箱,可能认为这类数值型对象更多的使用价值是其数值内容,而非对象地址,为更实际方便使用。

String对象有intern(internalize)概念,是为了节省空间,同样内容的String对象只需一个内存实例即可,防止堆中出现过多相同内容的String对象造成使用上的浪费。String c = "abc"; 这样定义是liternal string,天生就是interned的。

?


http://topic.csdn.net/u/20120515/09/429f3b13-ec97-41ba-a869-9ef831e2d1d4.html?seed=577676173&r=78564159#r_78564159

热点排行