变量的==比较

public class Test {
public static void main(String[] args) {
String a1=new String("123");
String a2=new String("123");

System.out.println(a1==a2);//false,是因为al和a2存的是new在堆中的地址空间
String a3="123";
String a4="123";
String a5=a3;
System.out.println(a3==a4);//true,因为a3和a4都是直接放到常量池的,当创建a3的时候,如果没有456则会创建一个空间
//当创建a4的时候,已经有456的地址,那么直接指向456的地址空间,所以a3和a4的地址空间是同一个
System.out.println(a1==a3);//false
System.out.println(a3==a5);//true

String s1="a";
String s2="b";
String s3="ab";
String s4=s1+s2;
String s5=s1+"b";
String s6="a"+"b";
String s7="a"+"b";
System.out.println(s4==s3);//false
System.out.println(s4==s5);//false
System.out.println(s3==s5);//false
System.out.println(s3==s6);//true
System.out.println(s7==s6);//true
}
}

posted @ 2020-07-15 15:25  幽魂~~  阅读(127)  评论(0编辑  收藏  举报