java 常用的api_Java中常用的API(一)——Object
概述
如果要問Java為什么是用起來非常舒服的語言,那很大一部分的功勞就是JavaAPI的。API定義了許多封裝好的類和方法供我們使用,來處理特定的問題,所以學習常用的API是非常重要的。
同時,面向對象的核心思想就是用合適的對象去做合適的事情。什么是合適的對象呢?一種是自己根據需要創建的類而生成的對象,另一種是sun官方描述的好多常用的類,我們使用這些類創建的對象,這也就是API的概念。
sun定義的那么多類的終極父類是Objec類。Object描述的是所有類的通用屬性與方法。
所以,API的介紹就是從Object類開始的。
Object對象
1. toString方法:返回的是對象的描述信息
當我們直接輸出一個對象的時候,這時候就會調用被輸出對象的toString方法。代碼如下:
class Person{
public String name;
public String sex;
public int age;
public Person(String name,String sex,int age){
this.age = age;
this.name = name;
this.sex = sex;
}
}
public class Demo1 {
public static void main(String[] args){
System.out.println(p);
}
}
代碼執行后輸出的結果是:java.lang.Object@de6ced
可以看出,直接調用toString方法輸出的是:類名@哈希碼值的十六進制形式。
對于上述代碼,如果給出的需求是這樣的:調用輸出方法的時候,輸出這個對象(Person)姓名、年齡、性別。這個時候又應該如何實現呢?
根據我們之前學的繼承,假如父類的指定的功能不能滿足要求,那么子類可以復寫父類的功能函數。那么該對象再調用toString()方法時,則會調用子類復寫的toString方法。
所以為了達到這個目的,需要對Person類的toString方法重寫。
//重寫toString方法
public String toString(){
return "姓名:" + name + " 性別:" + sex + " 年齡" + age;
}
這個時候,輸出的內容就滿足我們的需求了。
這里一個重要的編程習慣就是:我們在進行開發時,要對自定義的類重寫toString方法,對對象進行詳細的描述說明。
2. equals方法:返回的是比較的結果
利用equals方法來比較兩個對象,如果相等返回true,否則false,比較的是對象的內存地址值。
public class Demo1 {
public static void main(String[] args){
Person p = new Person("王浩","男",33);
Person p1 = new Person("王浩","男",33);
System.out.println(p.equals(p1));
}
}
還是使用Person這個類,創建的兩個對象。根據我們前面學習的知識,比較之后輸出的結果肯定是false。因為創建的這兩個對象的內存地址不同,所以會產生這樣的輸出結果。
如果我們將代碼這樣改寫:
public class Demo1 {
public static void main(String[] args){
Person p = new Person("王浩","男",33);
Person p1 = p;
System.out.println(p.equals(p1));
}
}
這時候,輸出的結果就是true了。因為此時p和p1指向的是同一塊內存地址。
那么,接下來我們有一個需求:將equals比較的條件換成姓名、性別、年齡,如果以上三項相同,則表示相同。根據toString方法的啟示,這里當然也要對equals方法進行重寫。
class Person{
public String name;
public String sex;
public int age;
public Person(String name,String sex,int age){
this.age = age;
this.name = name;
this.sex = sex;
}
public boolean equals(Object obj){
Person p = null;
//判斷obj對象是否屬于Person類
if(obj instanceof Person){
//obj對象如果是Person的類,則對obj進行類型轉換
p = (Person)obj;
}
if(this.name.equals(p.name)&&this.sex.equals(p.sex)&&this.age==p.age){
return true;
}
return false;
}
}
public class Demo1 {
public static void main(String[] args){
Person p = new Person("王浩","男",33);
Person p1 = new Person("王浩","男",33);
System.out.println(p.equals(p1));
}
}
此時輸出的結果就是true了。
注意:代碼中的instanceof的作用是判斷某個對象是否屬于某個類,這個關鍵字的應用還是相當廣范的。
最后,我們要對自定義的類重寫equals(),使得比較兩個對象的時候比較對象的屬性是否相等,而不是內存地址
3. hashCode方法:返回該對象的哈希碼值
這個方法采用系統底層的哈希算法實現,同一個對象的呷西碼是唯一的,同時,java規定如果兩個對象equals返回true,那么這兩個對象的hashCode碼必須一致。
所以,一旦對equals方法重寫,那么一般來講也要對hashCode方法重寫。對于hashCode方法不做過多贅述。
總結
以上是生活随笔為你收集整理的java 常用的api_Java中常用的API(一)——Object的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7配置 console口_玩
- 下一篇: java程序死了telnet还有用吗_j