相关疑难解决方法(0)

Java中字符串的不变性

请考虑以下示例.

String str = new String();

str  = "Hello";
System.out.println(str);  //Prints Hello

str = "Help!";
System.out.println(str);  //Prints Help!
Run Code Online (Sandbox Code Playgroud)

现在,在Java中,String对象是不可变的.那么为什么对象str可以赋值"帮助!".这与Java中字符串的不变性相矛盾吗?任何人都可以向我解释一下不变性的确切概念吗?

编辑:

好.我现在得到它,但只是一个后续问题.以下代码如何:

String str = "Mississippi"; 
System.out.println(str); // prints Mississippi 

str = str.replace("i", "!"); 
System.out.println(str); // prints M!ss!ss!pp! 
Run Code Online (Sandbox Code Playgroud)

这是否意味着再次创建了两个对象("Mississippi"和"M!ss!ss!pp!"),并且引用str指向replace()方法之后的另一个对象?

java string immutability

211
推荐指数
7
解决办法
9万
查看次数

JAVA中字符串的不变性

考虑一下代码:

public class Stringer {

    public static void main(String[] args) {

        String s1 = "SomeLine";
        System.out.println(s1);  // prints SomeLine
        s1 = "AnotherLine";
        System.out.println(s1);  // prints AnotherLine
    }

}
Run Code Online (Sandbox Code Playgroud)

当我改变s1来自SomeLineAnotherLine,因为字符串是不可改变的,这是否意味着SomeLine丢失,可享有GC?

非常感激

java string garbage-collection immutability

2
推荐指数
1
解决办法
88
查看次数

标签 统计

immutability ×2

java ×2

string ×2

garbage-collection ×1