小豬學(xué)習(xí)

小小白慢慢學(xué)習(xí)中ing 第十九天
努力努力
本日內(nèi)容(Object類、8種基本類型對應(yīng)的包裝類)
1、Object類:
所有類的根基,Java中的所有的類,都會直接或間接的繼承Object類。
只要是java中的類對象,默認(rèn)都可以調(diào)用Object類中的方法。
????????如果一個方法的參數(shù)為Object類型,實(shí)際可以傳入任意的類對象。
????????如果一個方法的返回值是Object類型,實(shí)際上可以返回任意的類對象。
A:getClass()-->Class,未完待續(xù)--->反射
????????返回一個對象運(yùn)行時的類類型。
????????對象.getClass()--->返回該對象所屬的類的字節(jié)碼文件對象。
????????理解為:返回的是堆中的實(shí)際的對象的類型
B:hashCode()--->int,獲取對象的哈希碼
????????每當(dāng)產(chǎn)生一個對象的時候,都是由哈希算法計(jì)算出該對象的哈希值。
????????擴(kuò)展:該方法是native的。native詞義:"本土的,土著的"。native method,就是一個Java調(diào)用的非java代碼的接口。方法的實(shí)現(xiàn)可能由非java語言實(shí)現(xiàn)。
C:toString()--->String,返回一個對象的字符串表示形式
????????????????對象.toString()--->String,描述這個對象的。
????????Object類:對于toString()-->獲取的是對象的內(nèi)存地址(邏輯地址)
????????????????getClass().getName() + @ + 對象的哈希值(轉(zhuǎn)16進(jìn)制)
????????實(shí)際上,我們并不希望獲取對象的內(nèi)存地址:對于對象的描述,我們認(rèn)為使用對象的各個屬性值,拼接一個字符串,更合理。
????????子類應(yīng)該重寫該方法。如何重寫?習(xí)慣上是將對象的屬性拼接成一個字符串返回即可。
D:equals()-->boolean,用于比較兩個對象是否相等。
????????????==:專門比較數(shù)值,是否相等。適合8個基本數(shù)據(jù)類型:byte,short,int,long,float,double,char,boolean
????????????equals(),在Object類中,提供了一個方法equals(),專門用于判斷對象是否相等。
Object類中,equals()方法的源代碼:
//在方法中this,就指代了c1對象 ?
public boolean equals(Object obj) {//Object obj = c2;
????? return (this == obj);
}
c1.equals(c2);//false
經(jīng)查看源代碼, 我們發(fā)現(xiàn),父類中的equals(),但是實(shí)際上還是比較了對象的內(nèi)存地址,我們認(rèn)為不好用。所以子類重寫。比較對象的各個屬性值。
子類重寫:重寫的規(guī)則
????????應(yīng)該比較對象的各個屬性值即可,如果都相同,那么認(rèn)為是相同的對象,最終返回true,否則返回false。
c1.equals(c2);
/*
分析:
this-->c1
obj-->c2,向上轉(zhuǎn)型
Cat c2 = new Cat();
c1.equals(c2);//Object obj = c2;
*/
//step1:先比較地址:c1和c2 的地址:this == obj,如果地址相等,直接返回true。
//step2:判斷,obj == null? obj--->Cat
//step3:比較對應(yīng)的屬性是否相等
this.各種屬性和
? ? ? ?obj--->向下轉(zhuǎn)型:c2.各種屬性
2、8種基本類型對應(yīng)的包裝類
2.1、 8種基本數(shù)據(jù)類型
在java中,有兩大數(shù)據(jù)類型:基本類型,引用類型
基本類型:
????????整數(shù)型:byte,int,short,long
????????浮點(diǎn)型:float,double
????????字符型:char,''
????????布爾型:boolean,
引用類型:
????????數(shù)組
????????類類型
????????接口
????????集合。。。。
對于每一種基本數(shù)據(jù)類型,都有對應(yīng)的類類型。

靜態(tài)屬性:
MAX_VALUE
MIN_VALUE
2.2.2 Number類
Number類作為6種數(shù)值類型的包裝類的直接父類。然后再繼承Object類
int,short,long,byte,float,double這6種都是數(shù)值類型的。整數(shù)和小數(shù)。
1、將基本類型——>轉(zhuǎn)為對象類型(裝箱)
????????構(gòu)造方法可以的。
????????靜態(tài)的valueOf()
2、將對象類型——>基本類型(拆箱)
????????對象.xxxValue()
3、將String類型——>基本類型
????????靜態(tài)的parseXXX(String類型),基本類型的數(shù)據(jù)
有256個已經(jīng)緩存好的數(shù)據(jù):[-128,127]。
2.2.3 裝箱和拆箱
裝箱:將基本類型--->包裝類類型的對象
拆箱:從包裝類類型的對象——>基本類型
JDK1.5之前,需要自己通過代碼來實(shí)現(xiàn)裝箱和拆箱。
自動:auto
自動裝箱和自動拆箱
2.2.4 Character
包裝的是char類型的數(shù)值。
2.2.5 Boolean類
面向?qū)ο螅侯愔械囊粋€實(shí)例,class