最近在写程序时候,出现了一些错误,后来发现我在比较两个字符串时用了“==”,而不是equals,导致程序运行结果不对。java中equals是非常重要的,特将一些使用equals的一些用法记录下来。
以前比较两个对象时总是喜欢用“==”,但在java中用“==”比较不同的对象时,会导致意想不到的结果,比如有以下例子:String str1=new String("Hello word") String str2=new String("Hello word") 则str1==str2的值为false ,与自己预想的值相反吧。虽然他们的值相同,但他们是不同的对象,所以值为false。而str1.equals(str2)返回值为True,只要它们是相同的类型并且值相同,就可认为这两个对象相同哦........而JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)。
对于Object类,它提供了一个最最严密的实现,那就是只有是同一对象是,equals方法才返回
true,也就是人们常说的引用比较而不是值比较.这个实现严密得已经没有什么实际的意义,
所以在具体子类(相对于Object来说)中,如果我们要进行对象的值比较,就必须实现自己的
equals方法.
以后对equals的用法进一步理解后再续!
以前比较两个对象时总是喜欢用“==”,但在java中用“==”比较不同的对象时,会导致意想不到的结果,比如有以下例子:String str1=new String("Hello word") String str2=new String("Hello word") 则str1==str2的值为false ,与自己预想的值相反吧。虽然他们的值相同,但他们是不同的对象,所以值为false。而str1.equals(str2)返回值为True,只要它们是相同的类型并且值相同,就可认为这两个对象相同哦........而JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)。
对于Object类,它提供了一个最最严密的实现,那就是只有是同一对象是,equals方法才返回
true,也就是人们常说的引用比较而不是值比较.这个实现严密得已经没有什么实际的意义,
所以在具体子类(相对于Object来说)中,如果我们要进行对象的值比较,就必须实现自己的
equals方法.
以后对equals的用法进一步理解后再续!