Java简单题,为什么这两个输出都是false1
发布网友
发布时间:2023-10-24 03:46
我来回答
共2个回答
热心网友
时间:2024-11-29 17:24
equals适用于比较“基本数据类型" ----我笑了 这句是错的
equals是比较引用类型的,之所以是false 原因是这样的
== 比较的是引用 你new了2次 明显 引用不一样 可以理解为地址
因为你的类Number是直接继承Object的 而且你没有覆盖equals方法
所以当你调用n1.equals(n2)的时候 会去调用父类的
而Object中equals默认的代码如下
public boolean equals(Object obj) {
return (this == obj);
}
所以输出的是false
所以对引用类型比较 应该覆盖equals方法 后使用
热心网友
时间:2024-11-29 17:24
n1.tostring().equals(n2.tostring()) 这样比较的话才会是true。
因为==号会比较内存地址。
你的n1和n2都是new出来的,所以内存地址肯定不一样。
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true