Object類和異常

1Object類

1object類

1.1object類概述

? ? 是java中所有類的基類,根類饼酿。Object類是任何一個(gè)類的直接父類或者間接父類

Object提供了一些可以在任何一個(gè)Java中類型使用方法

? ? toString方法

? ? aquals方法

? ? hashCode方法

還存在一些和線程相關(guān)的方法:

? ? wait();

? ? notify()源内;

? ? notifyAll()毯炮;

Object作為一種數(shù)據(jù)類型,如果按照J(rèn)ava數(shù)據(jù)類型規(guī)范

? ? 一個(gè)方法需要的參數(shù)是Object類型肃弟,那么該方法可以傳入任何類型

? ? 一個(gè)方法需要返回值的類型是Object類型那么該方法的返回值可以是任意類型

【Object定義的數(shù)組玷室,可以保存任何Java類型】

【萬物皆可Object】

1.2toString方法【雞肋】

格式:

? ? public String toString()零蓉;

作用:

? ? 返回一個(gè)字符串,簡(jiǎn)要描述當(dāng)前類對(duì)象信息

【Object原生方法】

Student stu = new Student()穷缤;

Sout ==> stu

com.afen.entity.Student@15db9742

這就是Object類內(nèi)toString方法原生效果

【返回的是當(dāng)前對(duì)象對(duì)應(yīng)的完整包名敌蜂,類名@當(dāng)前對(duì)象在內(nèi)存空間首地址(16進(jìn)制)】

當(dāng)涉及到類對(duì)象需要設(shè)計(jì)信息簡(jiǎn)要描述時(shí),toString方法全會(huì)默認(rèn)自行調(diào)用

比如:

Sout 津肛,信息保存

【Object原生方法效果問題】

1展現(xiàn)信息較少

2無法直觀的看到類對(duì)象中保存的數(shù)據(jù)

在存在需求的情況下章喉,可以重寫toString方法來滿足當(dāng)前類對(duì)象簡(jiǎn)要描述需求。通常情況快捷鍵

Alt+ Shift + S

==>toString方法重寫

@Override public String toString() { return "Dog [name=" + name + ", age=" + age + "]"; } }

1.3equals方法【重點(diǎn)】

1.3.1equals方法原生概述

格式:

? ? public boolean? equals (Object obj)快耿;

作用:

? ? ? ?比較兩個(gè)類對(duì)象是否一致囊陡,是否是同一個(gè)對(duì)象,如果是返回true掀亥,如果不是返回false

在Object類內(nèi)的原始操作方式:

比較兩個(gè)對(duì)象的空間首地址撞反。

public boolean equals (Object obj){

return(this == obj);

}’

this 表示調(diào)用當(dāng)前方法的類對(duì)象搪花,實(shí)際就是一個(gè)空間首地址

obj是傳入的參數(shù)遏片,也是一個(gè)引用數(shù)據(jù)類型,同時(shí)也是保存一個(gè)空間首地址

【兩個(gè)對(duì)象空間首地址一致撮竿。表示同一個(gè)對(duì)象】

1.3.2equals方法如何重寫

思路

1判斷比較兩個(gè)對(duì)象是不是同一個(gè)對(duì)象

保留原本的this ==? obj 吮便,滿足條件直接判斷為true

2數(shù)據(jù)類型必須是一致的情況下才可以進(jìn)行比較!4碧ぁ髓需!如果equals方法傳入?yún)?shù)的數(shù)

據(jù)類型不是當(dāng)前調(diào)用方法的類對(duì)象對(duì)應(yīng)數(shù)據(jù)類型。沒有必要進(jìn)行比較

3判斷【自定義比較】?jī)?nèi)容

id name age 完全一致房蝉,兩個(gè)對(duì)象相同僚匆。

【注意】

equals 方法實(shí)際上是可以通過Ide開發(fā)工具直接完成的,完成的思路·過程和以上內(nèi)容一致搭幻,這里需要大家首先來自定義完成方法咧擂,后期使用工具來完成

System.out.println(person6.equals(person7));

1.3.3equals方法答辯

1明確equals方法的調(diào)用對(duì)象是誰,后期會(huì)存在大量同名方法檀蹋,但是調(diào)用對(duì)象不一致松申,效果不一致

2基本數(shù)據(jù)類型不能使用equals方法

3這里存在多態(tài)的使用

a.equals方法所需的參數(shù)是Object類型,不關(guān)什么類型數(shù)據(jù)傳入到方法中俯逾,都會(huì)自動(dòng)轉(zhuǎn)換為Object類型

b.方法內(nèi)instanceOf判斷當(dāng)前傳入的對(duì)象真實(shí)情況是不是當(dāng)前Person類型

c.強(qiáng)制類型轉(zhuǎn)換時(shí)在明確數(shù)據(jù)類型一致的情況下贸桶,完成的,是用于方法操作成員變量

4this

this表示調(diào)用當(dāng)前方法的類內(nèi)對(duì)象桌肴,equals方法調(diào)用方式

類對(duì)象..equals(另一個(gè)類對(duì)象)

this表示類對(duì)象

1.4hasCode方法【重點(diǎn)】

1.4.1hashCode方法原生概述

hash ==> 哈希

hashCode ==> 哈希值

哈希值是對(duì)象在開發(fā)中的唯一標(biāo)識(shí)E傩ァ!识脆!

哈希值一般用于一定的哈希結(jié)構(gòu)存儲(chǔ)中

? ? Java中hashCode方法是定義在Object類內(nèi)设联,也就是說每一個(gè)對(duì)象都有hashCode方法善已,可以獲取當(dāng)前對(duì)象的哈希值

? ? Object類默認(rèn)的哈希值是當(dāng)前對(duì)象的空間首地址,十進(jìn)制展示方式

1.4.2Java開發(fā)語法規(guī)則

Java中規(guī)定:?

? ?如果Java中的兩個(gè)對(duì)象使用equals方法比較結(jié)果為true离例,表示相同的對(duì)象换团,那么要求當(dāng)前比較的兩個(gè)對(duì)象對(duì)應(yīng)的hashCode一 致的。

? ? 有且只重寫equals方法的情況下宫蛆,hashCode方法返回的數(shù)據(jù) 依然是對(duì)象對(duì)應(yīng)的空間首地址十進(jìn)制展示方式艘包,如果兩個(gè)對(duì)象按照自 定義equals方法比較結(jié)果為true,存在可能性兩個(gè)對(duì)象hashCode 值不一致耀盗,這樣會(huì)導(dǎo)致后期使用的數(shù)據(jù)結(jié)果中想虎,出現(xiàn)一些違背原則的 問題。? ? hashCode方法返回的哈希值叛拷,也是當(dāng)前對(duì)象在一定結(jié)構(gòu)內(nèi)的唯 一索引I喑!忿薇!

【代碼開發(fā)強(qiáng)制規(guī)定】? ? 如果按照自己的比較方式重寫了equals方法裙椭,必須重寫 hashCode方法,來滿足要求

1.4.3如何重寫hashCode方法

格式:?

?public int hashCode();?

?返回值為int類型

一般要求:? ?

?1. 會(huì)選擇帶有一定獨(dú)立性數(shù)據(jù)署浩,不可重復(fù)性數(shù)據(jù)作為 hashCodo返回?cái)?shù)據(jù)的首要選擇揉燃。? ??

2. hashCode在開發(fā)中或多或少都有可能出現(xiàn)沖突重復(fù)問題, 這里盡量避免=疃啊4短馈!

【原則】? ? equals方法比較結(jié)果為true弊攘,hashCode方法返回哈希一致

1.4.4屬性不存在對(duì)應(yīng)的int類型數(shù)據(jù)如何解決【小拓展】

情況解釋?

?實(shí)體類不存在任何一個(gè)int類型數(shù)據(jù)抢腐,不存在唯一性數(shù)據(jù)。 需要通過成員變量來完成組合操作獲取哈希值肴颊。

推薦一個(gè)方法? ?

?Objects工具類提供的hash方法? ?

?public static int hash(Object... values) {? ? ? ??

eturn Arrays.hashCode(values); ?? } ???

Object... ?? ? ??

Object當(dāng)前方法所需數(shù)據(jù)類型為Object,也就說支持任 何數(shù)據(jù)類型 ?? ? ??

... 表示這里參數(shù)個(gè)數(shù)不做任何限制渣磷,任意長(zhǎng)度婿着,可以沒 有參數(shù),可以是多個(gè)參數(shù) ?? ? ?


?... 不定長(zhǎng)參數(shù) ?? 指定的數(shù)據(jù)轉(zhuǎn)換計(jì)算之后得到一個(gè)具有唯一性的哈希值醋界。

2異常處理

2.1java中的異常規(guī)則

Java中異常和錯(cuò)誤的提示機(jī)制也是前因后果>顾巍!形纺!?

?都是存在一個(gè)最基本的原則丘侠,從哪里到哪里?

?Java中的異常,錯(cuò)題提示已經(jīng)非常優(yōu)秀了V鹧N献帧打肝!?

?TeamViewer 耐心看錯(cuò)誤!E膊丁粗梭!?

?錯(cuò)誤修改有助于提升技術(shù)!<读恪断医!?

?C語言 段錯(cuò)誤!W嗉汀鉴嗤!?

?從頭到尾去捋邏輯!

2.3Throwable類

Throwable是Java中所有異常和錯(cuò)誤的基類?

--| Error 錯(cuò)誤

?--| Exception 異常

構(gòu)造方法:?

?Throwable();?

?創(chuàng)建一個(gè)Throwable類對(duì)象序调,其中保存的異匙砉或者錯(cuò)誤信 息為null

?Throwable(String message); 【重點(diǎn)】?

?創(chuàng)建一個(gè)Throwable類對(duì)象,其中保存的異晨恢茫或者錯(cuò)誤信 息為message

成員方法:? ? ??

?String toString();? ? ? ??

得到當(dāng)前異常的簡(jiǎn)要信息描述? ??

String getMessage();? ? ? ??

獲取當(dāng)前Throwable類對(duì)象中保存的異橙侔ぃ或者錯(cuò)誤信息? ??

void printStackTrace(); 【偽重點(diǎn)】 ?? ? ??

在命令行中展示錯(cuò)誤的前因后果!F犹默垄!紅色字體

2.4Error和Exception

Error 錯(cuò)誤?

?無法處理,只能避免I醺佟?诙А!?

?錯(cuò)誤都是Error結(jié)尾?

Exception 異常?

?可以處理介杆,還有挽回的余地?

?異常都是Exception結(jié)尾 J

ava代碼中有一個(gè)數(shù)組需要申請(qǐng)64GB內(nèi)存鹃操,(目前電腦內(nèi)存32GB)

?不可能!4荷凇荆隘!錯(cuò)誤 Error

Java中代碼需要一個(gè)數(shù)組,但是比給予操作的數(shù)組不合法? ??

可以處理的赴背,Exception

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末椰拒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凰荚,更是在濱河造成了極大的恐慌燃观,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件便瑟,死亡現(xiàn)場(chǎng)離奇詭異缆毁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)到涂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門脊框,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颁督,“玉大人,你說我怎么就攤上這事缚陷∈矢荩” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵箫爷,是天一觀的道長(zhǎng)嚷节。 經(jīng)常有香客問我,道長(zhǎng)虎锚,這世上最難降的妖魔是什么硫痰? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮窜护,結(jié)果婚禮上效斑,老公的妹妹穿的比我還像新娘。我一直安慰自己柱徙,他們只是感情好缓屠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著护侮,像睡著了一般敌完。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上羊初,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天滨溉,我揣著相機(jī)與錄音,去河邊找鬼长赞。 笑死晦攒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的得哆。 我是一名探鬼主播脯颜,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼贩据!你這毒婦竟也來了栋操?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤乐设,失蹤者是張志新(化名)和其女友劉穎讼庇,沒想到半個(gè)月后绎巨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體近尚,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年场勤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戈锻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歼跟。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖格遭,靈堂內(nèi)的尸體忽然破棺而出哈街,到底是詐尸還是另有隱情,我是刑警寧澤拒迅,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布骚秦,位于F島的核電站,受9級(jí)特大地震影響璧微,放射性物質(zhì)發(fā)生泄漏作箍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一前硫、第九天 我趴在偏房一處隱蔽的房頂上張望胞得。 院中可真熱鬧,春花似錦屹电、人聲如沸阶剑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牧愁。三九已至,卻和暖如春葱色,著一層夾襖步出監(jiān)牢的瞬間递宅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工苍狰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留办龄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓淋昭,卻偏偏與公主長(zhǎng)得像俐填,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翔忽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349