本帖最后由 余威宏 于 2013-5-2 20:28 编辑
首先,==的作用是比较对象的值是否相等,如果相等返回true,否则返回false;当两边的对象属于引用数据类型时,==的作用是判断对象的内存地址是否一致,如果同时指向同一地址,则返回true,否则返回false.
第一句 Stirng hello="Hello",lo="lo"; // 在string pool中产生了 hello,lo 这样的常量字符串。
第二句 System.out.println((hello==("Hel"+"lo"))+" "); //左边是变量hello=“hello”,由于右边"Hel"+"lo"加号连接起来后为"hello" ,所以左边跟右边两个都指向了String pool中"hello" ,指向的为同一个对象。打印结果为trule。
第三句 System.out.println((hello==("Hel"+lo))+" "); //这个由于右边"Hel"+lo 中有个变量lo,这个时候一个是String pool中的对象,一个为堆中的对象,它们所指向的对象不同。 打印结果为false。
希望我的回答能让楼主明白。
|