1.字符串当成参数传递,在方法里被修改,原来的字符串不会被改变
public static void main(String[] args) {
String str1 = "demo1";
String str2 = "demo2";
str1 = str2;
System.out.println("1 str1:" + str1); //输出:1 str1:demo2 str1被改变
changeParam(str1);
System.out.println("2 str1:" + str1); //输出:2 str1:demo2 str1没有被改变
}
private static void changeParam(String value){
value = "demo3";
}
2.两个字符串相等,改变其中一个字符串的值,另外一个字符串不会被改变
private static void check2(){
String str1 = "demo1";
String str2 = "demo2";
str2 = str1;
System.out.println("check2 str1 == str2:" + (str1 == str2)); //check2 str1 == str2:true
str1 = "example1";
System.out.println("check2 str1:" + str1); //check2 str1:example1
System.out.println("check2 str2:" + str2); //check2 str2:demo1
System.out.println("check2 str1 == str2:" + (str1 == str2)); //check2 str1 == str2:false
}
3.赋值相同字符串
等号赋值的两个String相等,通过new创建的不相等
private static void check4(){
String str1 = "example";
String str2 = "example";
System.out.println("check4 str1 == str2:"+ (str1 == str2)); //check4 str1 == str2:true
String str3 = new String("example");
String str4 = new String("example");
System.out.println("check4 str3 == str4:"+ (str3 == str4)); //check4 str3 == str4:false
}
参考:Java中String对象的不可变性
网友评论