你好
String s = "java";
String ss = "java";
String s1 = new String ("java");
String s2 = "ja";
String s3 = "va";
String s4 = s2+s3;
String s5 = "ja"+"va";
System.out.println(s==ss); //true final修饰的string类为常量,唯一的,s和ss指向同一个字符,比较地址相同
System.out.println(s==s1); //false s指向"java"字符串.s1指向堆内存中一块空间,这块空间里装了"java",地址值为空间地址值,so比较不相同
System.out.println(s==s4); //false s4会新生成一个字符串,新的地址
System.out.println(s==s5); //true 本身你的s5="ja"+"va"就是个幌子,它就是"java",指向也是"java",s s5地址值相同,true
注意:==号比的是地址.与equals比较不同,实际应用中字符串的比较还是equals好点,... |