本帖最后由 嘟嘟嘟嘟嘟 于 2015-7-17 01:05 编辑
- public static void main(String[] args) {
- String str = "hello1";
- String a = "hello";
- final String b = "hello";
- String c = a + 1;
- String d = b + 1;
- System.out.println(c==str);//结果为 false
- System.out.println(d==str);//结果为true
- }
复制代码
代码如上
为何两者的判断结果会不同?
------------------------------------------------我的想法
1. c == str 是表示判断两者的地址值
2. 虚拟机在创建d =b+1时,直接使用得到的值"hello1"在内存中找同样的值,然后让变量指向这个地址.
而虚拟机去创建c = a+1时, 由于a是变量,所以没有去内存找(会造成不确定性?),而是在内存中开辟了一个新的空间来存.
所以,c == str是false, d == str是true. |
这样理解对吗?
|
|