Java中==和equals的区别

Java中==和equals的区别

 

在JAVA中,==与equals都有比较判断对象是否相等的作用,但具体用法却并不相同。

属性不同:

     ==是运算符号,而equals则属于方法。

用法不同:

     当==两边的对象属于基本类型时,==的作用仅是比较对象的值是否相等,如果相等返回true,否则返回false;当两边的对象属于引用数据类型时,==的作用是判断对象的内存地址是否一致,如果同时指向同一地址,则返回true,否则返回false.

    equals两边对象只能属于引用数据类型,因为equals是方法,所以它是如何具体判断对象是否相等是根据程序而定的,equals是属于 object类,默认是判断内存地址是否相同,但在object的子类中可以重写equals方法,如在String类中只是比较对象内容是否一致,一致 则返回true,否则返回false

String s1= "abc";
String s2 = "abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));



结果: true. true. 因为在常量池中,一个常量只会对应一个地址,因此不管是再多的 "abc", 这样的数据都只会存储一个地址. 所以所有他们的引用都是指向的同一块地址,因此基本数据类型和String常量是可以直接通过==来直接比较的。

 

引用: https://www.cnblogs.com/yoyozhou/archive/2011/12/16/2290602.html

posted @   安小白learning  阅读(16190)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示