栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

String,new String,int,Integer中==与equals的用法原理。

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

String,new String,int,Integer中==与equals的用法原理。

==与equals的区别:
== :对比的是栈中的值,基本数据类型是变量值,引用数据类型是堆中内存对象的地址。
equals:Object中默认也是采用 ==比较,但通常会重写,重写后的equals方法,根据具体的重写情况决定比较属性的值、地址等。

一、Integer

package kaoshiceshi02;
public class Demo03 {
    public static void main(String[] args) {
        Integer i=1,j=1;

//==对于基本数据类型比较的是值,对于引用数据类型比较的是地址。
//Integer属于引用数据类型,==比较的是地址。
//此时对于值介于-128~127中的两个Integer数(注:Integer比较地址时才会用到这个范围, 比较值时用不到这个范围。),如果它们值相同,那么它们的内存地址是相同的,==的输出结果为true。
//1介于-128~127之间,==输出true。
//equals()默认比较的是地址,但Integer中jdk已定义好重写的equals()方法,
在Integer里面equals比较的是值(内容),所以只要值(内容)一样就会输出true。

 System.out.println(i==j);//true
 System.out.println(i.equals(j));//true

//200超出了-128~127这个范围,==输出false。
//equals比较的是内容,依然为true。

  Integer m=200,n=200;
  System.out.println(m==n);//false
  System.out.println(m.equals(n));//true

二、字符串

String str1="Hello";
String str2="Hello";
String str3=new String("Hello");

//==对于基本数据类型比较的是值,对于引用数据类型比较的是地址。
//String是引用数据类型,==比较的是地址。且在str1创建后,常量池中便有了"Hello"
//所以在定义str2时,因常量池中已有"Hello",所以此时直接从常量池中取出,
//所以str1与str2两者地址相同,==比较结果为true。

   System.out.println(str1==str2);//true

//equals()默认比较的是地址,但String中jdk已定义好重写的equals()方法,
//在String里面比较的是值(内容),所以只要值(内容)一样就会输出true。
//"Hello"与"Hello"内容相同,所以输出true。

System.out.println(str1.equals(str2));//true

//==对于基本数据类型比较的是值,对于引用数据类型比较的是地址
//String是引用数据类型,比较的是地址。
//因new String,一定会在栈中开辟一个新的内存空间,
//所以str3与str1内存地址不同,而str1与str2内存地址相同,故str3与str2内存地址也不同。
//==比较结果为false。

 System.out.println(str1==str3);//false
 System.out.println(str2==str3);//false

//equals()默认比较的是地址,但String中jdk已定义好重写的equals()方法,
//在String里面比较的是值(内容),所以只要值(内容)一样就会输出true。
//"Hello"与"Hello"内容相同,所以输出true。

  System.out.println(str1.equals(str3));//true
  System.out.println(str2.equals(str3));//true

三、自动拆箱

Integer a=200;
int b=200;
//==对于基本数据类型比较的是值,对于引用数据类型比较的是地址。
//这里会自动拆箱后,然后==再按值进行比较。
System.out.println(a==b);//true

  }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号