如果說Java所有類只能有一個(gè)父親,那就只能是 Object 類。Object 類 Java 中所有類的父類,也是我們常說的祖宗類。本篇文章我將和大家簡單地說一說這個(gè)祖宗類 Object 的內(nèi)容,以及介紹幾種這個(gè)類最常用的方法。
一、簡介
正如前面所說的,Object類作為Java中最常用的內(nèi)置包裝類之一,它是Java所有類的父類,我們也常常從稱之為祖宗類,來彰顯其地位之高。如果一個(gè)類沒有指定父類,那么它默認(rèn)的父類就是Object類。因此,以下兩段代碼性質(zhì)是一樣的:
public class Myee{...}
public class Myee extends Object{...}
由于Java中的所有類都是Object類的子類,也因此可以調(diào)用該類中的所有方法,常見方法如下:
在這里面,同String()、equals()和getClass()三種方法是最常見也是最常用的。下面,我們將著重介紹這三種方法。
二、toString()方法
該方法從字面上來看,to 是得到、獲取,String 大家都公認(rèn)是個(gè)字符串的符號(hào)了,因此結(jié)合在一起,這個(gè)方法就是獲取字符串的方法的。官方的解釋,就是返回對(duì)象的字符串。
toString()也有一個(gè)比較常用,但是不直接使用的方式。再平常我們會(huì)把字符串和某個(gè)對(duì)象用連接符號(hào)(+)連接在一起的時(shí)候,系統(tǒng)會(huì)默認(rèn)把調(diào)用這個(gè)對(duì)象的 toString() 方法來返回一個(gè)字符串。
在 Object 類中的 toString() 方法返回的是一個(gè)“運(yùn)行時(shí)類名@十六進(jìn)制哈希值”,如:
// 定義Demo類,實(shí)際上繼承Object類
class Demo {
}
public class ObjectDemo01 {
public static void main(String[] args) {
Demo d = new Demo(); // 實(shí)例化Demo對(duì)象
System.out.println("不加toString()輸出:" + d);
System.out.println("加上toString()輸出:" + d.toString());
}
}
輸出結(jié)果:
不加toString()輸出:Demo@15db9742
加上toString()輸出:Demo@15db9742
從上述的輸出結(jié)果可見,加不加 toString() 方法,輸出的都是一樣的結(jié)果。
因此,一般許多類都會(huì)對(duì) toString() 方法進(jìn)行重寫。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "姓名:" + this.name + ":年齡" + this.age;
}
public static void main(String[] args) {
Person per = new Person("小明", 30);// 實(shí)例化Person對(duì)象
System.out.println("對(duì)象信息:" + per);// 打印對(duì)象調(diào)用toString()方法
}
}
輸出結(jié)果:
對(duì)象信息:姓名:小明:年齡30
以上代碼就是對(duì) toString() 方法進(jìn)行了重寫,這樣直接輸出對(duì)象時(shí)調(diào)用的就是子類重寫過的該方法。
三、equals()方法
在學(xué)習(xí)字符串比較的時(shí)候,我們就學(xué)過兩種比較方式,一種是 == 比較運(yùn)算符,另一個(gè)就是接下來要講的 equals() 方法。
這兩種比較方式有什么樣的區(qū)別呢?== 比較運(yùn)算符,比較兩個(gè)變量是否指向同一個(gè)實(shí)例;而 equals() 方法值只比較兩個(gè)對(duì)象的內(nèi)容是否一致。一般來說,字符串一般只關(guān)心內(nèi)容一樣不一樣。
使用格式:
boolean result = obj.equals(Object o);
其中 obj 表示要進(jìn)行比較的對(duì)象, o 表示被比較的對(duì)象。
下面我將用具體的代碼實(shí)例來展示一下 equals() 方法的用法:
場景需求:編寫一個(gè) Java 程序,來實(shí)現(xiàn)用戶登錄的驗(yàn)證功能。要求用戶從鍵盤上是輸入賬戶和密碼,如果賬戶和密碼與指定的內(nèi)容一樣的時(shí)候,則顯示成功登錄;否則,會(huì)顯示登陸失敗。
import java.util.Scanner;
public class Test01 {
// 驗(yàn)證用戶名和密碼
public static boolean validateLogin(String uname, String upwd) {
boolean con = false;
if (uname.equals("admin") && upwd.equals("admin")) { // 比較兩個(gè) String 對(duì)象
con = true;
} else {
con = false;
}
return con;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("------歡迎使用大數(shù)據(jù)管理平臺(tái)------");
System.out.println("用戶名:");
String username = input.next(); // 獲取用戶輸入的用戶名
System.out.println("密碼:");
String pwd = input.next(); // 獲取用戶輸入的密碼
boolean con = validateLogin(username, pwd);
if (con) {
System.out.println("登錄成功!");
} else {
System.out.println("用戶名或密碼有誤!");
}
}
}
失敗顯示:
------歡迎使用大數(shù)據(jù)管理平臺(tái)------
用戶名:
adimn
密碼:
admin
用戶名或密碼有誤!
成功顯示:
------歡迎使用大數(shù)據(jù)管理平臺(tái)------
用戶名:
admin
密碼:
admin
登陸成功!
四、getClass()方法
從該方法的字面上看,get 獲得,獲?。?Class 都知道是類。因此這個(gè)方法從字面上看,就是獲取類名的方法。在官方的解釋是,返回當(dāng)前對(duì)象所屬的類,是一個(gè) Class 對(duì)象。通過這個(gè) Class 對(duì)象,可以獲取該類的所有信息,包括了類名、父類以及它所實(shí)現(xiàn)的接口等等。
下面我們用一個(gè)代碼示例演示一下:
public class Test02 {
public static void printClassInfo(Object obj) {
// 獲取類名
System.out.println("類名:" + obj.getClass().getName());
// 獲取父類名
System.out.println("父類:" + obj.getClass().getSuperclass().getName());
System.out.println("實(shí)現(xiàn)的接口有:");
// 獲取實(shí)現(xiàn)的接口并輸出
for (int i = 0; i < obj.getClass().getInterfaces().length; i++) {
System.out.println(obj.getClass().getInterfaces()[i]);
}
}
public static void main(String[] args) {
String strObj = new String();
printClassInfo(strObj);
}
}
運(yùn)行結(jié)果:
類名:java.lang.String 父類:java.lang.Object 實(shí)現(xiàn)的接口有: interface java.io.Serializable interface java.lang.Comparable interface java.lang.CharSequence
五、總結(jié)
以上就是關(guān)于 Java 中的祖宗類 Object 類的簡要介紹,以及該類三種最常用方法的詳細(xì)介紹。如果想要了解更多關(guān)于 Java Object類的其他方法的內(nèi)容,請(qǐng)搜索W3Cschool以往的文章。如果這篇文章對(duì)您的學(xué)習(xí)有所幫助,還請(qǐng)大家能多多地關(guān)注和支持我們!