在String s1 ="str"+ s.length(); s1 = str4的值,但在相等检查期间,在下一个sysout语句中结果为false

moh*_*ark 5 java string

public class Foo {

    public static void main(String[] args) {
        foo();
        bar();
    }

    public static void foo() {
        String s = "str4";
        String s1 = "str" + s.length();
        System.out.println("(s==s1)" + (s1 == s));
     }

    public static void bar() {
        String s = "str4";
        String s1 = "str" + "4";
        System.out.println("(s==s1)" + (s1 == s));
    }
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

(s==s1)false

(s==s1)true
Run Code Online (Sandbox Code Playgroud)

在String s1 ="str"+ s.length(); s1 = str4的值但在double equal(==)检查期间在下一个sysout语句中结果为false

*/

Lui*_*oza 10

那是因为"str" + "4"编译为"str4".

String s = "str4";
String s1 = "str" + "4";
Run Code Online (Sandbox Code Playgroud)

对于编译器,它将是:

String s = "str4";
String s1 = "str4";
Run Code Online (Sandbox Code Playgroud)

请注意,它"str4"是一个文字字符串,它将存储在字符串池中.