Dog类的使用以及==和equals()方法的比较

编程入门 行业动态 更新时间:2024-10-05 05:12:15

Dog类的使用以及==和equals()<a href=https://www.elefans.com/category/jswz/34/1771314.html style=方法的比较"/>

Dog类的使用以及==和equals()方法的比较

我们在刚接触JAVA语言时,一直不太明白类以及类中域的的创建以及作用这些东西,然而对象又是什么东西。我通过一个小例子来了解一下它们的用处。

练习一:创建一个名为Dog的类,它包含两个String域:name和says。在main()方法中,创建两个Dog对象,一个名为spot(它的叫声为“Ruff!”),另一个名为scruffy(它的叫声为“Wurf!”)。然后显示他们的叫声和名字。

解答:(解答过程中使用的是eclipse平台)

import java.util.*;class Dog 
{String name;String says;
}public class chapterThree 
{public static void main(String[] args)
{Dog dog1 = new Dog();Dog dog2 = new Dog();dog1.name = "spot";dog1.says = "Ruff!";System.out.println("The first dog name's: " + dog1.name + " and it says " + dog1.says);dog2.name = "scruffy";dog2.says = "Wurf!";System.out.println("The second dog name's: " + dog2.name + " and it says " + dog2.says);}
}

运行结果如下:

 由此我们可以看出所谓的域便是类中的成员变量,在这个案例中:Dog类中存在name和says两个成员变量。然后再使用new语句进行对象的创建:Dog dog1 = new Dog();  Dog dog2 = newDog();及两个对象分别为dog1和dog2。

所以我们再使用上面这个案例再比较一下 == 和 equals()的区别:                                                     练习二:创建一个新的Dog索引,并对其赋值为spot对象。测试用 == 和 equals() 方法来比较所有引用的结果:

解答代码:(解答过程中使用的是eclipse平台)

class Dog
{String name;String says;public Dog(String name,String says){this.name=name;this.says=says;}
} public class test{public static void main(String[] args){Dog spot= new Dog("spot","Ruff!");Dog scruffy=new Dog("scruffy","wuff!");System.out.println(spot.name+"  "+spot.says);System.out.println(scruffy.name+"  "+scruffy.says);Dog spot1=spot;System.out.println("spot1==spot  "+(spot1==spot));System.out.println("spot1.equals(spot)  "+(spot1.equals(spot)));System.out.println("scruffy==spot  "+(scruffy==spot));System.out.println("scruffy.equals(spot)  "+(scruffy.equals(spot)));}
}

运行结果如下:                                                                                                                                   

如果我们要计较两个对象的实际内容是否相同,此时,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于“基本类型”,基本类型直接使用 == 和 !=即可:

我们通过一个例子来了解:                    

public class EqualsMethod{public static void main(String[] args){Integer n1 = new Integer(47);Integer n2 = new Integer(47);System.out.println(n1.equals(n2));}
}

结果为: 结果正如我们预料的一样:                                                                                                  

当创建了自己的类测试时,结果却不是这样的:

class Value
{int i;
}public class EqualsMethod2{public static void main(String[] args){Value v1 = new Value();Value v2 = new Value();v1.i = v2.i = 100;System.out.println(v1.equals(v2));}
}

结果为:                                                                                                                                             

案例:编写一个接收两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印。做==和!= 比较的同时,用equals()做测试。在main()方法中用几个不同的字符串对象调用这个方法。  


public class lesson14 {public static void Compare(String Left,String Right) {System.out.println("Left = " + Left);System.out.println("Right = " + Right);System.out.println("Left == Right:" + (Left == Right));  //比较System.out.println("Left != Right:" + (Left != Right));System.out.println("Left.equals(Right):" + Left.equals(Right));  //用equals进行比较}public static void main(String[] args) {Compare("abc","abc");  //比较相同的字符串System.out.println();String s = "Hello";Compare(s,"Hello");  //比较引用和字符串System.out.println();Compare("s","Hello");  //比较不同的字符串}
}

测试结果:                                                                                                                                          

 

两种结果不同,这是由于equals()的默认行为是比较引用,所以除非在自己的新类中覆盖equals()方法,否则不可能表达出我们希望的结果。

 由此可以看出因为没有覆盖equals()方法,所以 == 和 equals()实质上是一样的,都是判断引用是否一样。

更多推荐

Dog类的使用以及==和equals()方法的比较

本文发布于:2024-02-28 06:20:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768315.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   Dog   equals

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!