2 qq 27688163 qq_27688163 于 2016.04.09 21:54 提问

java中equals()方法比较

class V{

}
public class T1 {
public static void main(String[] args) {

    V v = new V();
    V v1 = new V();
    System.out.println(v.equals(v1));
}}
为什么输出是false

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.09 21:56
已采纳

两个对象,引用地址不同,当然false
除非你重写V的equals

u013560024
u013560024 回复荆疋: equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较 其指向的对象是否相同的。== 比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。
2 年多之前 回复
u013560024
u013560024 回复荆疋: 对于字符串变量来说,使用“==”和“equals()”方法比较字符串时“==”比较两个变量本身的值,即两个对象在内存中的首地址。 “equals()”比较字符串中所包含的内容是否相同。
2 年多之前 回复
caozhy
caozhy 如果问题解决,请点下我回答右边的采纳。谢谢
2 年多之前 回复
caozhy
caozhy 回复荆疋: 如果你有字段,比如其中有个字段name,按照它判断,可以写public boolean equals(Object o){ V v = (V)o; if (v == null) return false; return v.name.equals(name); } public int hashCode() { return name.hashCode(); }
2 年多之前 回复
caozhy
caozhy 回复荆疋: public boolean equals(Object o){ return true; } public int hashCode() { return 1; }
2 年多之前 回复
qq_27688163
qq_27688163 谢谢
2 年多之前 回复
qq_27688163
qq_27688163 回复caozhy: 那要怎样重写?
2 年多之前 回复
caozhy
caozhy 回复荆疋: 你说的是字符串,字符串重写了equals,比较字面值。
2 年多之前 回复
caozhy
caozhy 回复荆疋: 不是
2 年多之前 回复
qq_27688163
qq_27688163 equals()不是比较两个对象的实际内容吗?
2 年多之前 回复
CSDNXIAOS
CSDNXIAOS   2016.04.09 22:02

java中equals方法和“==”的比较

分类:
技术贴 2009-02-24 20:04 5129人阅读 评论(3)
收藏
举报
equalsjavaintegerstringcharacterobject

equals 方法是 java.lang.Object
类的方法。
有两种用法说明:
(1)对于字符串变量来说,使用“==”和“equals()”方法比......
答案就在这里:java中equals方法和“==”的比较
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

qq_27688163
qq_27688163 谢谢
2 年多之前 回复
curry_du
curry_du   2016.04.09 22:14

因为V类没有重写equals方法,所以将使用父类Object中的equals方法,官方文档中是这样介绍Object的equals方法:this method returns true if and only if x and y refer to the same object (x == y has the value true). 由于是两个不同的对象,所以返回false。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java-equals和==的比较规则和equals的重写
1、java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 4、==比较的是2个对象的地址,而
Java Object类中equals()方法与String类中equals()方法的比较
public class AccountTester2 { public static void main(String[] args) { BankAccount2 b1 = new BankAccount2("Bob",100.00f,Grade2.General); BankAccount2 b2 = new BankAccount2("Bob",100.00f,Grade2.Ge
Java中两个对象的比较 equals()方法和==号的区别
在Java中,时不时我们会把两个对象进行,然而得到的结果却不是我们想的结果,这是怎么回事呢? 一、两种形式的比较:比较时,我们要弄清楚是哪一种比较。       1.值类型比较       即内容相同,我们就认为是相等的。比如:int i=5;int j =5;此时我们说i和j相等,其实指的是i和j的内容相同。       2.引用类型比较      但在Java中,除了
数组的equals方法
数组的equals方法没有重载Object的equals方法,跟“==”效果一样
对象比较中equals与==的区别
关于变量之间的比较,可以分为基础类型变量的比较和对象之间的比较。 对于基本类型来说,他们存储在jvm的栈中,因此比较的是变量的内容,也就是比较的变量的值。 对于引用类型来说,因为对象内容存储在jvm的堆中,栈中只是存储对象的引用(地址),无论是==还是equals比较的都是栈中的内容,即对象的引用,也就是比较的是两个对象的地址。但根据创建对象的方式不同可以分为两种情况: 1. 使
java中 equals()方法 与 “==”的区别
摘要java语言的 equals() 方法 与 “==” 的区别,是每个初学者都会遇到过的问题。之前自己也很清楚,可日子一长,又渐渐遗忘,于是整理出一篇博客,复习一下。
Object类中的equals(Object obj) 和 操作符“==”的区别
Object类,它是java中所有类的根类。Object类的子类都可以使用Object中定义的方法。 此次主要介绍Object类中定义的equals(Object obj)方法。这个方法的作用是比较两个对象是否相等(而不是比较对象的属性是否相同)。仅当被比较的两个引用变量指向同一个对象(即指向同一个地址),该方法返回true,否则返回false。这和操作符“==”用于比较引用变量时功能一样。如E
Java中"=="和equals方法在字符串比较中的不同
昨天写代码的时候,遇到了比较两个字符串的值是否相同的情况,然后发现使用"=="和equals会得到不同的结果。其实我的目的是比较两个字符串的序列是否相同,这个时候应该使用equals方法的。大家在比较两个字符串的时候一定要想明白自己到底是要比较这两个字符串的什么,是序列还是引用?现在把自己总结的内容写下来。 首先介绍什么是字符串池:Java中有一个字符串池,其实是很多字符串的一个集合。字符串池由
JAVA之equals对于引用类型比较的方式不同呢
因为equals这个方法是Object,所以我们首先查看一下Object对与此方法的解释: Objec类equals方法(源码): public boolean equals(Object obj) { return (this == obj); } 源码分析:在“JAVA之“==”和“equals”的区别”这篇博客中,我详细的说明了“==”的作用,除了基本数
String类中的equals方法总结
最近我发现了一个事情,那就是在面试笔试中,好多公司都喜欢在String字符串上出问题,涉及到方方面面的知识,包括其中的一些常用方法。在此,我总结下关于String类中的一些方法,以备应对以后的笔试面试。 String类的定义:java.lang 类 Stringjava.lang.Object java.lang.String 所有已实现的接口: Serializable, CharSeque