String的不变性

2019-04-18  本文已影响0人  坠叶飘香

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对象的不可变性

上一篇 下一篇

猜你喜欢

热点阅读