總 結
一、Object類
1.1 Object類是所有類的父類,位於java.lang包中
數組也是Object類的子類
Object類的常用方法
toString();
equals();
hashCode();
Object類在java.lang包下,是所有類的根。任何類的對象,都可以調用Object類中的方法,包括數組對象。
1.2 Object和Object[]之間的區別
方法中的形參是Object類型時,任何類型的參數都可以傳進去執行。
方法中形參是Object[]類型時,只有對象數組可以傳入執行。
例:
public static void arrayTest(Object[] obj){
}
public static void main(){
int[] array=new int[4];
arrayTest(array)//錯誤出現
}
二、Object類中的常用方法
1. toString方法;
toString方法可以將任何一個對象轉換成
字符串返回,返回值的生成算法為:getClass().getName() + '@' + Integer.toHexString(hashCode())。
2. equals方法;
Object類中的equals方法,用來比較兩個引用的虛地址。當且僅當兩個引用在物理上是同一個對象時,返回值為true,否則將返回false。
任何類可以根據實際需要,覆蓋toString及equals方法,實現自定義的邏輯。
public class Zilei {
private String name = "123";// 學生姓名
private int age;// 年齡
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重寫toString方法
public String toString(){
return"Student:"+"name="+name+",age="+age;
}
}
---------------------
類本身重寫toString方法
重寫Student類的toString方法后
public class Ttttttt {
public static void main(String[] args) {
Zilei stu1=new Zilei();
stu1.setName("張三");
stu1.setAge(23);//如果把姓名和年齡不輸入,就會輸出Student:name=123,age=0
System.out.println(stu1);
}
}
打印: Student: name=張三,age=23
三、equals方法和“==”
equals方法
比較對象的虛地址,但是可以在類中被重寫。
如:String類重寫了,兩個相同值的String對象相比較為 true;
String str=new String(“123”);
String str1=new String(“123”);
System.out.println(str.equals(str1));à打印為true.
“==”
比較的是內存中的虛地址
String str=new String(“123”);
String str1=new String(“123”);
System.out.println(str==str1);à打印為false
四.hashCode方法
獲取對象的哈希碼值,為16進制
equals方法與hashCode方法關系
如果兩個對象使用equals比較返回true,那么它們的hashCode值一定要相同。
如果兩個對象equals比較返回false,那么它們的hashCode值不一定不同,覆蓋equals,往往需要覆蓋hashCode,可以使用Eclipse自動生成,保證equals返回true,則hashCode相同;equals返回false,則hashCode不同。在Set集合部分有實際應用。