String a="Hello World!";
String b="Hello World!";
String c=new String("Hello World!");
System.out.println(a==b);
System.out.println(a==c);
Double double1=0D ;
Double double3=0D ;
Double double2=new Double(0) ; System.out.println(double1==double3);
System.out.println(double1==double2);结果是
true
false
false
false
谁帮解释一下 a==b 是true而double1==double3是FALSE
String b="Hello World!";
String c=new String("Hello World!");
System.out.println(a==b);
System.out.println(a==c);
Double double1=0D ;
Double double3=0D ;
Double double2=new Double(0) ; System.out.println(double1==double3);
System.out.println(double1==double2);结果是
true
false
false
false
谁帮解释一下 a==b 是true而double1==double3是FALSE
解决方案 »
- easymock测试service的远程接口
- Xfire+jibx 如何根据代码生成绑定文件和绑定class啊
- 为什么在test里面测试是好的到了页面就报错了??
- 请高手指点一下,谢谢.
- 为什么很少人用resion?
- 有关session取不到值
- resultset类只能从左到右,从前到后浏览,这从左到右是什么意思呀?
- 为什么我在struts的form中的数据传不到action里去?
- 最近在学习james的源代码,感觉处处都会碰到 configuration 这个类,请问它是做什么用的?提供配置信息的吗?
- sesionBean+CMP+oracle报错:表或视图不存在
- hibernate 向 mysql 数据库 存中文..
- 对于Java算法主要应学些什么呢
打印true
final class Double
final class String修饰符一样啊
什么样有你说的常量池 只有String吗?
double1==double3
比较的是对象引用 两个对象在堆中是两块不同的空间,自然地址是不相同的
在JVM中源代码中所有相同字面值的字符串常量只可能建立唯一一个拘留字符串对象。
String a="Hello World!";
String b="Hello World!";
代码中局部变量a,b中存储的是地址,但却都是常量池中"Hello world!"指向的堆的唯一的那个拘留字符串对象的地址
所以是同一个地址 自然是相等
String b="Hello World!";
因为a和b引用的是字符常量,它们都存于栈中,值共享。所以都指向同一地址。
即a==b; 为true.
Double double1=0D ;
Double double3=0D ;包装类不同于String类型,Double double1=0D ;在后台做了转换即Double double1=new Double(0);
用new 分配了一个对象,它是堆存储的。 有惟一的地址。所以double1和double3是值相同,但地址不同的
两个对象。所以double1==double3;为false.