代表一个不可变的字符序列,创建字符串对象的通常使用两种方式:一种使用语法内置的字符串字面常量如String s1=“abc”,另外一个是使用new运算符使用构造方法来创建字符串对象如String s2=new String(“abc”)。 下面举例来演示String类的各方法的使用。
示例1:演示字符串比较。
package string.lang.java; public class StringDemo1 { public static void main(String[] args) { String s1="abc"; String s2="abc"; String s3=new String("abc"); String s4="ab"+"c"; System.out.println("s1==s2结果是:"+(s1==s2)); System.out.println("s1==s3结果是:"+(s1==s3)); System.out.println("s1==s4结果是:"+(s1==s4)); } } |
运行的结果如下:
说明:
的==运算符是引用比较。
s1,s2都指向存储是数据区的常量字符串池,故s1==s2的结果是true。
s3指向new运算符在堆区创建的新字符串,故s1==s3的结果是false。
表示达式"ab"+"c"在编译时优化为"abc",在运行时查找字符串池中是否存在相同字符串字面常量, 若有则不在创建新对象,故s4仍然和s1,s2一样指向已有字符串常量。