Java基础String对象
String对象的特点
1、通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但地址不同
char[] chs = {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);
上面的代码中JVM首先会创建一个字符数组,然后每一new都会有一个新的地址,只不过S1和S2参考的字符串内容是相同的。
2、以" "给出的字符串,只要字符序列相同(顺序和大小相同),无论程序代码出现几次,JVM只会建立一个String对象,并在字符串池中维护。
String s3 = "abc";
String s4 = "abc";
在上面的代码中,针对第一行代码,JVM回建立一个String对象放在字符串池中,并给S3参考,第二行则是让S4直接参考字符串池中的String对象,也就说他们本质上是同一个对象。
package com.string;
public class StringDemo02 {
public static void main(String[] args){
//构造方法方式得到对象
char[] chs ={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs);
//直接赋值方式得到对象
String s3="abc";
String s4="abc";
//比较字符串地址是否相同
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s3==s4);
//比较字符串内容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}