博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中对象的等价性比较
阅读量:6070 次
发布时间:2019-06-20

本文共 934 字,大约阅读时间需要 3 分钟。

Java中不能简单的用==、!=等比较符对两个对象进行比较,尽管有时候两个对象的内容完全一样,但是对象的引用却是不一样的!因此,对两个对象的实际内容进行比较时,必须使用所有对象都适用的特殊方法equals()。

看下面一个例子:

public class EqualsMethod{
public static void main(String[] strs){
Integer n1 = new Integer(47); Integer n2 = new Integer(47); //不能直接将两个引用比较,输出false System.out.println(n1==n2); //用特殊方法equals(),比较两个对象的实际内容,输出true System.out.println(n1.equals(n2)); int n3 = 47; int n4 = 47; //基本类型比较,可直接用比较符即可,输出true System.out.println(n3==n4); } }

equals()方法不适用于“基本类型”,基本类型直接使用==和!=即可,这点从上例中也可以看出来

但是,事情并不是这么简单,对于我们自己创建的类,equals()默认比较两个对象的引用,如下例:

class Value{
int i; } public class EqualsMethod{
public static void main(String[] strs){
Value n1 = new Value(); Value n2 = new Value(); n1.i = n2.i = 100; //对于自己创建的类,用equals(),默认比较两个对象的引用,输出false System.out.println(n1.equals(n2)); } }

所以除非在自己的新类中覆盖equals()方法,否则不可能表现出我们希望的行为

推荐一个自己业余时间开发的引擎,()

转载地址:http://ykfgx.baihongyu.com/

你可能感兴趣的文章
jQuery获取Select选中的Text和Value,根据Value值动态添加属性
查看>>
ASP.NET MVC中实现多个button提交的几种方法
查看>>
树与森林的存储、遍历和树与森林的转换
查看>>
CSS设计指南之浮动与清除
查看>>
Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig
查看>>
adb shell am 的用法
查看>>
codeforces 85D D. Sum of Medians Vector的妙用
查看>>
Android进程的内存管理分析
查看>>
php -- 反射ReflectionClass
查看>>
Nginx反向代理和负载均衡部署指南
查看>>
java获取当前日期时间代码总结
查看>>
互联网广告学——程序化购买
查看>>
新版本chrome浏览器控制台怎么设置成独立的窗口
查看>>
oracle中nvarchar2字符集不匹配
查看>>
Mysql5.6.22源代码安装
查看>>
每天一个linux命令(5):rm 命令
查看>>
mksquash_lzma-3.2 编译问题
查看>>
【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
查看>>
PHP JAVA Bridge桥的最新使用
查看>>
免费工具
查看>>