标签:
String类的对象是字符串常量,一切看起来改变了String对象的操作,其实只是改变了字符串引用变量所引用的字符串罢了。
Java中的字符串存放在一个公共的存储池中,引用指向存储池中相应的位置,编译器可以让字符串共享,即两个不同的引用,可以指向同一个字符串常量,但该字符串的物理存储实际只有一份。
判断两个字符串是否相等,一定要使用equals方法。“==”只能判断两个引用是否指向同一个字符串,在不同的物理存储位置也可以存储相同的字符串。
实际上,只有字符串常量是共享的,而+或substring等操作产生的结果并不是共享的。(不绝对)
1 String s="people";
2 String t="people";
3 char c[]={‘p‘,‘e‘,‘o‘,‘p‘,‘l‘,‘e‘};
4 System.out.println(s=="pe"+"o"+"ple"); //true
5 System.out.println(t.equals(c)); //false
6 System.out.println(t.equals(new String("people"))); //true
总之,不要使用“==”来判断字符串的相等性,以免出错。
标签:
原文地址:http://www.cnblogs.com/youilika/p/4915692.html