Java关于 == 与 equals 的区别和判断

一.

String str = “我很帅”; //常量池,创建字符串”我很帅”;

String str2 = “我”+”很”+”帅”; //常量相加

//+在编译的时候会自动完成,先在常量池中查找,有就不用创建.

Boolean isTrue =  str == str2 ;//true内容相同,地址同

isTrue  = str.equals(str2);//true 内容相同.

二.

String str3 = new String(“我很帅”);

String str4 = new String(“我很帅”);

isTrue =str2 ==str3 ;//false,new在堆新地址.地址不同.

isTrue  = str3.equals(str2);//true,内容相同.

扫描二维码关注公众号,回复: 3030326 查看本文章

三.

String a = “我”;//常量池中地址a

String b = “很”;//常量池中地址b

String c = “帅”;//常量池中地址c

String d = a+b+c;//对象相加.

//编译的时候a+b+c 当作 StringBuffer.append方法相连. 转化成String类型.

String str = ”我很帅”;//创建一个地址.

Boolean isTrue =str ==d ;//false

 

String a=”ab”;//地址a

String b=a+”c”;

String c =”abc”;//地址b

 

四.     integer i1 = 100;

          integer i2 = 100;

System.out.println( i1 == i2 );//true

          integer i3 = 1000;

          integer i4 = 1000;

System.out.println( i3 == i4 );//false

解析:当 i 的值小于128时,默认是byte类型,所以比较的结果是true;当 i 的值>128时,会转为int类型的对象新建地址值

整数值的特点:超过128会新建新地址.

猜你喜欢

转载自blog.csdn.net/CXY_ZPH/article/details/81673453