java中equals方法的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中equals方法的问题相关的知识,希望对你有一定的参考价值。

import java.util.*;
public class Test
public static void main(String []agrs)

Collection c=new ArrayList();

c.add("hello");

c.add(new Integer(100));
c.remove("hello");
System.out.println(c.size());
System.out.println(c);
System.out.println(c.remove("hello"));



输出容器C的值时 没有hello
为什么 System.out.println(c.remove("hello")); 返回值是flase?
此时需要重写equals方吗?在那添加?

对于remove方法 在什么情况下 返回 true和flase?
被搞糊涂达··
System.out.println(c.remove("hello")); 我理解的是
是否删除成功
而c.remove("hello");
删除成功···
所以 应该返回true·····

参考技术A String对象中有重写Object的equals方法,重写为比较两个对象的值是否相等了。

你要把Object对象中的equals方法和String对象中的equals分清。
参考技术B 1、你先用c.remove("hello"); 删除了hello,当然在输出容器C的值时 没有hello 啦。
2、容器中已经没有了hello字符串,你再用c.remove("hello")移除指定的单个示例(hello字符串),当然是返回false啊。
3、从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)返回true,否则返回false。

楼主现在清楚了吗?
参考技术C c.add(new Integer(100));
c.remove("hello");

删除成功返回真,否则返回假
但你请注意我Copy的这两行,在这里面你已经调用remove方法把字符串给删除掉了

下面又调用这个方法,因为该串已经不存在于集合中,当然会返回false本回答被提问者和网友采纳
参考技术D Collection c=new ArrayList();

c.add("hello");

c.add(new Integer(100));
c.remove("hello");
你之前已经remove过了,
System.out.println(c);
当然就没有了
System.out.println(c.remove("hello"));
同样也返回的FLASE
c:remove后如果collection发生的改变返回true,如果没有返回false
第5个回答  2008-07-11 public static void main(String []agrs)

Collection c=new ArrayList();

c.add("hello");

c.add(new Integer(100));
c.remove("hello"); //这里已经将“hello”除去了,下面当然返回的是false了
System.out.println(c.size());
System.out.println(c);
System.out.println(c.remove("hello"));

java中equals的小问题,不知道为啥,有谁能说说么?

public class yumyu

public static void main(String[] args)
int a=2,b=5;
String ws="123",s="123";
System.out.println(a.equals(s));//报错
System.out.println(s.equals(a));//不报错

System.out.println(a.equals(s));//报错
因为equals是数据对象的方法,而a只是个基本数据类型,它不能调用equals方法!
System.out.println(s.equals(a));//不报错
是因为s能调用equals,而equals的参数是任意的!
参考技术A int换成Integer类型,封装起来,equals()是Object的方法,适用于它所有的子类,可是int 是基本数据类型之一,并不是Object的子类,自JDK1.5开始Integer和int能够自动封装解包 参考技术B s.equals(a)中的equals方法是字符串String的一个方法,只有字符串能用。int型的比较方法是"==",而不是equals。 参考技术C equals是object类中的方法,而object又是Java中所有类的父类,所以所有的类中其实都有equals方法,但是你的那个a就不行了,int是基本数据类型,a根本不是一个类的对象,所以你那样调用当然会报错喽。 参考技术D 你好,a是基本数据类型,不是对象,基本数据类型是不可以调用方法的。而s是String类型的,属于引用数据类型,s作为一个字符串对象,当然可以调用方法啦。 第5个回答  2011-09-13 楼上正解,Cannot invoke equals(String) on the primitive type int!!!

以上是关于java中equals方法的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于java中equals方法的疑惑

java 集合中重写hashCode方法和重写equals方法啥关系?

Java中关于equals()和hashCode()的问题

在java中,关于equals(),和hashCode()的重写问题。

java中equals使用方法

js 里面有equals方法吗