問:什么是Object類?
答:Object類存儲在java.lang包中,是所有java類(Object類除外)的終極父類。當然,數組也繼承了Object類。然而,接口是不繼承Object類的,Object類不作為接口的父類。
下面,我們就通過實例,對object進行分析
public class ObjectStu {
/*Object類:java里所有類的父類,頂層的類
*equals:判斷兩個對象是否"相等";
*hashcode:返回一個對象的哈希碼值,是一個整數
*因為之后的容器,例如hashset和hashMap會對元素進行去重的處理;所以equals和hashcode需要同時重寫;
*重寫之后需要滿足的標準:
*當equals的結果為true的時候,要求兩個對象的hashcode值相等;
*當equals的結果為false的時候,要求兩個對象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率)
*toString:返回對象的字符串表示
*作用:方便程序內查看對象屬性,方便調試代碼
*debug學習:
*1.在可能出現bug的地方設置斷點
*2.run as debug
*3.f6,執行當前代碼;f5,進入當前本句代碼的方法內部;f8,快速跳到下一個斷點,如果沒有下一個斷點,運行余下所有代碼
*equals:
*1.一致性:使用對象A調用equals和對象b進行比較,每一次的結果都應該一樣
*2.自反性:對象A調用equals比較對象b和對象b調用equals比較對象a的結果應該一樣
*/
public static void main(String[] args)
{
Person per = new Person("小王",10,150);
Person per1 = new Person("小王",20,140);
Person per2 = per;
System.out.println(per==per1);
System.out.println(per.equals(per1));
String str = "123";
str.equals("123");
str.hashCode();
System.out.println(per.hashCode());
System.out.println(per1.hashCode());
System.out.println(per2.hashCode());
System.out.println(per);
System.out.println(per1);
}
}
class Person {
String name;
int age;
int height;
public Person(String name, int age,int height)
{
super();
this.height = height;
this.name = name;
this.age = age;
}
/*@Override
public boolean equals(Object obj)
{
if(this==obj){
return true;
}
if(obj instanceof Person){
Person per = (Person)obj;
if(this.name.equals(per.name)&&this.age==per.age){
return true;
}
}
return false;
}*/
//重寫hashcode
/*@Override
public int hashCode(){
return name.hashCode()+age*31+height*31;
}*/
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + height;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public Boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (height != other.height)
return false;
if (name == null)
{
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString()
{
return "Person[name="+name+",age="+age+"]";
}
}
總結
以上就是本文關于java中object類實例分析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:
java內部測試類代碼詳解
java中繼承測試代碼分析
java中stack(棧)的使用代碼實例
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。