字符串连接需要多少个内存位置?

Eld*_*abu 5 java string stringbuilder memory-management

字符串连接需要多少个内存位置?

String myStringVariable = "Hello";
Run Code Online (Sandbox Code Playgroud)

在以下两个陈述中:

String s = "ABC" + "Hello" + "DEF";
Run Code Online (Sandbox Code Playgroud)

String s = "ABC";
s = s + "Hello";
s = s + "DEF";
Run Code Online (Sandbox Code Playgroud)

String s = "ABC" + myStringVariable + "DEF";
Run Code Online (Sandbox Code Playgroud)

哪个会消耗更多内存?在哪种情况下StringBuilder最有用?

Evg*_*eev 4

第一条语句将被编译器转换为String s = "ABCDEF";,因此不会有连接

第二条语句将由编译器转换为此代码(或类似的代码)

    String s = "ABC";
    StringBuilder sb = new StringBuilder(s);
    sb.append("DEF");
    s = sb.toString();
Run Code Online (Sandbox Code Playgroud)