大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 怎么學(xué)Java程序?Java基礎(chǔ)指南

怎么學(xué)Java程序?Java基礎(chǔ)指南

更新時間:2020-09-29 14:25:04 來源:動力節(jié)點(diǎn) 瀏覽2086次

Java的廣泛應(yīng)用,造就了Java工程師的輝煌年代,在所有程序員中,Java開發(fā)工程師就占據(jù)20%的比例,使其在軟件工程師的領(lǐng)域里獨(dú)占鰲頭!Java開發(fā)工程師的工資也相對較高,因?yàn)橐参烁嗳硕紒砑尤隞ava數(shù)據(jù)開發(fā)的行列之中。今天小編給大家快速掃盲一下Java基礎(chǔ)指南,讓你了解Java,知道怎么學(xué)java程序!

怎么學(xué)java程序

一、Java基本概念

JVM:java虛擬機(jī),負(fù)責(zé)將編譯產(chǎn)生的字節(jié)碼轉(zhuǎn)換為特定機(jī)器代碼,實(shí)現(xiàn)一次編譯多處執(zhí)行;

JRE:java運(yùn)行時環(huán)境,包含了java虛擬機(jī)jvm,java基礎(chǔ)類庫。是使用java語言編寫的程序運(yùn)行所需要的軟件環(huán)境;

JDK:java開發(fā)工具包,是編寫java程序所需的開發(fā)工具。JDK包含了JRE,同時還包含了編譯器javac,調(diào)試和分析工具,JavaDoc。

二、Java是如何編譯和執(zhí)行的?

怎么學(xué)java程序

上圖表示了Java代碼是怎么編譯和加載的。

從Java源碼開始到j(luò)avac程序處理后得到類文件,這個文件中保存的是編譯源碼后得到的Java字節(jié)碼。類文件是Java平臺能處理的最小功能單位,也是把新代碼傳給運(yùn)行中程序的唯一方式。

新的類文件通過類加載機(jī)制載入虛擬機(jī),從而把新類型提供給解釋器執(zhí)行。

三、Object的重要方法

有一種類,定義了很多種有用的方法,還可以根據(jù)需求重寫這些方法,它就是java.lang.Object類

1、toString方法

toString方法的作用是返回對象的文本表示形式。連接字符串或使用System.out.println等方法時,會自動在對象上調(diào)用這個方法。給對象提供文本表示形式,十分利于調(diào)試或記錄日志,而且精心編寫的toString方法還能給報告生成等任務(wù)提供幫助

Object類中的toString方法返回的字符串由對象所屬的類名和對象的十六進(jìn)制形式哈希碼(由hashCode方法計算得到,本章節(jié)稍后會介紹)組成。這個默認(rèn)的實(shí)現(xiàn)方式提供了對象的類型和標(biāo)識兩個基本信息,但一般并沒什么用。

2、equals方法

==運(yùn)算符測試兩個引用是否指向同一個對象(比較兩個內(nèi)存單元的內(nèi)容是否一樣)。如果要測試兩個不同的對象是否相等,必須使用equals方法。任何類都能覆蓋equals方法,定義專用的相等比較方式。Object.equals方法直接使用==運(yùn)算符,只有兩個對象是同一個對象時,才判定二者相等。

很多類以及自定義類的equals方法都需要重寫,是需要根據(jù)場景與需求來定制的。JDK自帶的許多類往往都是:

對比一些簡單的屬性值

再對比復(fù)雜的屬性值or對比業(yè)務(wù)上最快能區(qū)分對象的值

再對比其他的值or對比地址、長度

主要為了將那些不匹配的情況盡快排除

3、hashCode方法

Java中的hashCode方法就是根據(jù)一定的規(guī)則將與對象相關(guān)的信息(比如對象的存儲地址,對象的字段等)映射成一個數(shù)值,這個數(shù)值稱作為散列值。如果集合中已經(jīng)存在一萬條數(shù)據(jù)或者更多的數(shù)據(jù),如果采用equals方法去逐一比較,效率必然是一個問題。

此時hashCode方法的作用就體現(xiàn)出來了,當(dāng)集合要添加新的對象時,先調(diào)用這個對象的hashCode方法,得到對應(yīng)的hashcode值,實(shí)際上在HashMap的具體實(shí)現(xiàn)中會用一個table保存已經(jīng)存進(jìn)去的對象的hashcode值,如果table中沒有該hashcode值,它就可以直接存進(jìn)去,不用再進(jìn)行任何比較了;

如果存在該hashcode值,就調(diào)用它的equals方法與新元素進(jìn)行比較,相同的話就不存了,不相同就散列其它的地址,所以這里存在一個沖突解決的問題,這樣一來實(shí)際調(diào)用equals方法的次數(shù)就大大降低了。

另外注意,默認(rèn)的hashCode會發(fā)起native調(diào)用,如果用hashCode對兩個對象對比,會導(dǎo)致開銷增大。

hashcode方法的作用:

只要覆蓋了equals方法,就必須覆蓋hashCode方法。hashCode方法返回一個整數(shù),用于哈希表數(shù)據(jù)結(jié)構(gòu)。如果兩個對象經(jīng)equals方法測試是相等的,它們就要具有相同的哈希碼。

不相等的對象要具有不相等的哈希碼(為了哈希表的操作效率),這一點(diǎn)很重要,但不是強(qiáng)制要求,最低要求是不相等的對象不能共用一個哈希碼。為了滿足最低要求,hashCode方法要使用稍微復(fù)雜的算法或位操作。

Object.hashCode方法和Object.equals方法協(xié)同工作,返回對象的哈希碼。這個哈希碼基于對象的身份生成,而不是對象的相等性。(如果需要使用基于身份的哈希碼,可以通過靜態(tài)方法System.identityHashCode獲取Object.hashCode方法的返回值。)

4、hashCode和equal方法

hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用來在散列存儲結(jié)構(gòu)中確定對象的存儲地址的;

如果兩個對象相同,就是適用于equals(java.lang.Object)方法,那么這兩個對象的hashCode一定要相同;

如果對象的equals方法被重寫,那么對象的hashCode也盡量重寫,并且產(chǎn)生hashCode使用的對象,一定要和equals方法中使用的一致,否則就會違反上面提到的第2點(diǎn);

兩個對象的hashCode相同,并不一定表示兩個對象就相同,也就是不一定適用于equals(java.lang.Object)方法,只能夠說明這兩個對象在散列存儲結(jié)構(gòu)中,如Hashtable,他們"存放在同一個籃子里"。

5、Comparable::compareTo方法

如果一個類實(shí)現(xiàn)了Comparable接口,就可以比較一個實(shí)例是小于、大于還是等于另一個實(shí)例。這也表明,實(shí)現(xiàn)Comparable接口的類可以排序。

因?yàn)閏ompareTo方法不在Object類中聲明,所以由每個類自行決定實(shí)例能否排序。如果能排序就定義compareTo方法,實(shí)現(xiàn)實(shí)例排序的方式。

compareTo方法返回一個int類型的值,這個值需要進(jìn)一步說明。如果當(dāng)前對象(this)小于傳入的對象,compareTo方法應(yīng)該返回一個負(fù)數(shù);如果兩個對象相等,應(yīng)該返回0;如果當(dāng)前對象大于傳入的對象,應(yīng)該返回一個正數(shù)。

6、clone方法

Object類定義了一個名為clone的方法,這個方法的作用是返回一個對象,并把這個對象的字段設(shè)為和當(dāng)前對象一樣。clone方法不常用,原因有兩個。

其一,只有類實(shí)現(xiàn)了java.lang.Cloneable接口,這個方法才有用。Cloneable接口沒有定義任何方法(是個標(biāo)記接口),因此若想實(shí)現(xiàn)這個接口,只需在類簽名的implements子句中列出這個接口即可。

其二,clone方法聲明為protected,因此,如果想讓其他類復(fù)制你的對象,你的類必須實(shí)現(xiàn)Cloneable接口,并覆蓋clone方法,而且要把clone方法聲明為public。

clone方法很難正確實(shí)現(xiàn),而副本構(gòu)造方法實(shí)現(xiàn)起來更容易也更安全。

7、finalize方法

一種古老的資源管理技術(shù)叫終結(jié)(finalization),開發(fā)者應(yīng)該知道有這么一種技術(shù)。然而,這種技術(shù)幾乎完全廢棄了,任何情況下,大多數(shù)Java開發(fā)者都不應(yīng)該直接使用。只有少數(shù)應(yīng)用場景適合使用終結(jié),而且只有少數(shù)Java開發(fā)者會遇到這種場景。如果有任何疑問,就不要使用終結(jié),處理資源的try語句往往是正確的替代品。

終結(jié)機(jī)制的作用是自動釋放不再使用的資源。垃圾回收自動釋放的是對象使用的內(nèi)存資源,不過對象可能會保存其他類型的資源,例如打開的文件和網(wǎng)絡(luò)連接。垃圾回收程序不會為你釋放這些額外的資源,因此,終結(jié)機(jī)制的作用是讓開發(fā)者執(zhí)行清理任務(wù),例如關(guān)閉文件、中斷網(wǎng)絡(luò)連接、刪除臨時文件,等等。

終結(jié)機(jī)制的工作方式是這樣的:如果對象有finalize方法(一般叫作終結(jié)方法),那么不再使用這個對象(或?qū)ο蟛豢蛇_(dá))后的某個時間會調(diào)用這個方法,但要在垃圾回收程序回收分配給這個對象的空間之前調(diào)用。終結(jié)方法用于清理對象使用的資源。另外注意,這是一個實(shí)例方法。而在類上,沒有等效的機(jī)制。

怎么學(xué)java程序

以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“怎么學(xué)Java程序?Java基礎(chǔ)指南”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 人成午夜 | 精品国产91乱码一区二区三区 | 这里只有精品视频在线 | 亚洲产在线精品第一站不卡 | 水浒传删减剧情在线观看 | 国产精品久久亚洲不卡动漫 | 国产精品日韩欧美一区二区三区 | 91精品国产色综合久久不卡蜜 | 91精品国产91久久久久久青草 | 久久免费看片 | 激情国产白嫩美女在线观看 | 中国免费毛片 | 国产在线成人精品 | 午夜亚洲 | 国产精品主播在线 | 狠狠久久久久久亚洲综合网 | 久久首页 | 午夜欧美激情 | 精品久久久久久久久久久久久久久 | 九九久久国产精品免费热6 九九久久精品 | 久久婷婷久久一区二区三区 | 中文字幕亚洲精品第一区 | 99热久久国产精品免费观看 | 奇米麻豆| 98色花堂国产精品首页 | 久久精品国产在爱久久 | 在线观看国产一区二区三区 | 亚洲你懂得 | www四虎| 哪个网站能看毛片 | 亚洲精品一区二 | 四虎永久在线免费观看 | 欧洲成人免费视频 | 免费播放欧美毛片欧美a | 国产精品午夜波多野结衣性色 | 免费黄片毛片 | 一级毛片在线免费观看 | 国产色丁香久久综合 | 色婷婷婷丁香亚洲综合不卡 | 日韩欧美视频一区二区在线观看 | 四虎影免看黄 |