复制
用一个字符串直接复制给另一个对象,并没有在资源池中创建新的字符串对象。
public static void copytest() {
String[] s1 = {"A","B","C"};
String[] s2 = s1;
System.out.println(Arrays.asList(s2));
s2[0] = "D"; //修改了资源池中的数据
System.out.println(Arrays.asList(s2));
System.out.println(Arrays.asList(s1));
}
>>>[A, B, C]
[D, B, C]
[D, B, C]
对一个对象的修改,直接导致所有指向同一资源的对象返回结果都改变。
可使用Arrays复制方法,来创建一个新的String数组对象。
String[] s3 = Arrays.copyOf(s1,s1.length);
String[] s3 = s1.clone();
比较
“=”只能对比两个字符串是否指向String资源池中同一个对象,不能就内容进行对比。
字符串值的对比要使用 equals() 方法。
public static void equalstest () {
String s1 = "hello";
String s2 = "HELLO".toLowerCase();
String s3 = "HELLO";
System.out.println(s1 == s2); //只对比String资源池对象是否是同一个,不能对比内容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s3));
}
网友评论