【--】java中equals和==的区别

equals和==的区别


equals和==的区别,两个String之间判别,两个Integer之间判别

  • java中的两类数据类型
  • 基本数据类型,也称原始数据类型:
    数值型:包含整数型(byte short int long)和浮点型(float double)
    字符型:char
    布尔型:boolean
  • 引用数据类型
    类(class,复合数据类型):String,Integer,Date
    接口(interface)
    数组(array)
  • “==”
  • 基本数据类型。应用双等号"==",比较的是他们的值。
  • 引用数据类型。当用"=="进行比较的时候,比较的是在内存中的存放地址(堆内存地址)。
    注:除非是同一个new出来的对象,比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。
  • equals()
  • JAVA当中所有的类都是继承于Object这个超类的,类中定义了一个equals的方法。
  • 初始默认行为是比较对象的内存地址值
  • 对于String、Integer、Date复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟"=="的结果相同;如果被复写,按照复写的要求来。
//在Object类中equals()源码:
public boolean equals(Object obj){
//this - s1
//obj -s2
return (this == obj);
}
  • "=="和equals作用:
  • 基本类型:比较的就是值是否相同
    引用类型:比较的就是地址值是否相同
  • 引用类型:默认情况下,比较的是地址值。
  • String类
  • 例子
    String s1 = “Hello”;
    String s2 = “Hello”;
    String s3 = new String(“hello”);
    String s4 = s3; //引用传递
    s1 == s2 //true
    s1 == s3 //false
    s1 == s4 //false
    s3 == s4 //true
    s1.equals(s3) //true
    s1.equals(s4) //true
    s3.equals(s4) //true
  • 字符串比较之中“==”和equals()的区别:
    ==:比较的是两个字符串内存地址(堆内存)的数值是否相等,属于数值比较;
    equals():比较的是两个字符串的内容,属于内容比较。
  • 字符串缓冲池
  • 例子
    String s1 = “Hello”;
    String s2 = new String(“Hello”);
    s2 = s2.intern();
    s1 == s2 //true
    s1 equals s2 //true
  • (java.lang.String的intern()方法"abc".intern()方法的返回值还是字符串"abc",表面上看起来好像这个方 法没什么用处。但实际上,它做了个小动作:检查字符串池里是否存在"abc"这么一个字符串,如果存在,就返回池里的字符串;如果不存在,该方法会 把"abc"添加到字符串池中,然后再返回它的引用。

参考
数据类型
区别参考1区别参考2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值