本帖最后由 nicholyx 于 2014-3-17 22:14 编辑
- //增加了一点小知识,楼主瞧瞧吧
- public class StringText {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String s1 = "黑马";
- String s2 = "程序员";
- String s3 = s1 + s2;
- String s4 = "黑马程序员";
- String s5 = "黑马" + "程序员"; //和s4一样,都是指向同一个字符串常量,下面有解释
- System.out.println(s3.equals(s4)); //true
- System.out.println(s3 == s4); //false
- System.out.println(s4 == s5); //true
- }
- }
- /*
- 输出结果:
- true
- false
- true
- 解释:
- 至于 == 与 equals 的用法上面说的很清楚了,我说下我自己加进去的这个。
- 因为s4是字符串常量"黑马程序员",而字符串常量在编译期就被确定了,而s5中"黑马"和"程序员"也都是字符串常量,当一个字符串由多个字符串常量连
- 接而成时,它自己肯定也是字符串常量,所以s5也同样在编译期就被解析为一个字符串常量,由于s4和s5这两个字符串常量的字面值一样,
- 所以s4 和 s5 指向常量池中同一个字符串常量"黑马程序员"。
- 所以 s4 == s5 --> true;
- */
复制代码 |