摘要:方法區(qū)存儲不變的東西類加載信息,靜態(tài)變量,字符串常量。通用分代垃圾回收基礎(chǔ)時只需要知道有這幾種方法即可四內(nèi)存分析靜態(tài)變量,靜態(tài)方法,靜態(tài)初始化塊靜態(tài)變量與方法不需要具體的對象就可以調(diào)用用類名調(diào)用,靜態(tài)初始化塊后就會調(diào)用了。
一:面向?qū)ο笈c面向過程
籠統(tǒng)說,一個流程簡單一個復(fù)雜,面向過程好比開車上路,可以簡單羅列出幾個動作:上車,系安全帶,點火,出發(fā);向過程好比造出一輛汽車,肯定不能從焊鐵做起,第一步是收集所需要的各個部分(對象),通過一定的規(guī)律與邏輯去操作對象完成最終的結(jié)果。
對象是實際的東西,類是對象的模板,對對象的抽象,對象就按照類所規(guī)定的模板去形成實際的對象。
面向?qū)ο笕笤瓌t: 封裝:因為我們不想向外部暴露我們的數(shù)據(jù),因為如果我們的數(shù)據(jù)對外暴露的話,我們的數(shù)據(jù)如果在某個被他人調(diào)用的地方被修改我們是不可知的,所以有個封裝。你按我對外提供的接口進(jìn)行操作,保證你不會對我對象內(nèi)部的結(jié)構(gòu)進(jìn)行破壞。
繼承與多態(tài):多態(tài),就是多種形態(tài)。多態(tài)大致有兩種情況:
? 第一,假如,一個動物類,動物有一個run方法,我們用這個類描述動物的運(yùn)動,然后有個貓,處于面向?qū)ο蟮南嚓P(guān)聯(lián)思想,貓繼承自動物,然后貓不滿意這個方法,重寫了一個,貓的run的時候有一個叫的動作,不同對象,同一動作,最終執(zhí)行的效果不同。
? 第二:有一個貓,這個貓的run是有參數(shù)的,調(diào)用了貓的run方法,貓開始跑,每小時20邁,然后我們再調(diào)用run方法,傳了一個魚給貓,貓吃了魚就更有動力,然后每小時30邁開始跑。同一個對象,同一個行為,傳遞的消息不同,最終執(zhí)行的效果不同。
繼承與多態(tài)要一起理解,繼承是基礎(chǔ),多態(tài)是擴(kuò)展。因為對象之間會有重復(fù)的代碼,所以我們有了繼承,就像現(xiàn)實生活中子女繼承父母的資源一樣,但這種方法只能解決有關(guān)聯(lián)對象間的代碼重復(fù)問題。如果對象之間無關(guān),解決代碼重復(fù),我們需要依賴AOP。
多態(tài)是在繼承的基礎(chǔ)上實現(xiàn)的,多態(tài)實現(xiàn)的三個必要條件:
繼承
方法重寫(override)
父類引用指向子類對象,例如:Human human = new Man() ,new Man() 是一個子類對象,用一個父類引用human來指向子類對象。
棧內(nèi)存,堆內(nèi)存,方法區(qū)(隸屬于堆里,但是有必要多帶帶拉出來談)
棧內(nèi)存:基本數(shù)據(jù)類型 ,結(jié)構(gòu)大致為:變量名 :變量值 這樣的表格形式
棧是線程私有的,連續(xù)的,不同線程之間無法共享數(shù)據(jù)。
速度快
堆內(nèi)存:堆是線程間共享的,區(qū)域比棧大,速度慢,不連續(xù)的
存儲對象(在棧里對象存儲的是一個地址,例如 張三:0X0001)對象張三具體的信息要去0X0001這塊內(nèi)存塊里找。
方法區(qū):存儲不變的東西:
類加載信息,靜態(tài)變量,字符串常量。也就是不依賴具體對象的信息。
三:垃圾回收算法入門(引用計數(shù),引用可達(dá),通用分代垃圾回收)這部分深入要去看一遍《深入理解java虛擬機(jī)》 引用計數(shù)法:每個對象有一個引用計數(shù)屬性,新增一個引用時計數(shù)加1,引用釋放時計數(shù)減1,計數(shù)為0時可以回收。此方法簡單,無法解決對象相互循環(huán)引用 的問題。(例如,)
引用可達(dá):從GC Roots開始向下搜索,搜索所走過的路徑稱為引用鏈。當(dāng)一個對象到GC Roots沒有任何引用鏈相連時,則證明此對象是不可用的。不可達(dá)對象。
通用分代垃圾回收:(基礎(chǔ)時只需要知道有這幾種方法即可) 四:內(nèi)存分析靜態(tài)變量,靜態(tài)方法,靜態(tài)初始化塊靜態(tài)變量與方法不需要具體的對象就可以調(diào)用(用類名調(diào)用),靜態(tài)初始化塊new后就會調(diào)用了。
五:重寫Override返回值類型問題方法的重寫(override)要遵循兩同兩小一大的原則:(子類方法相對于父類方法)
1)兩同
1.1)方法名相同
1.2)方法參數(shù)列表相同
2)兩小
2.1)返回類型若為引用類型必須小于或等于父類的,若為基本類型或者void則必須相同
2.2)拋出的異常必須小于等于父類的
3)一大
子類方法的訪問權(quán)限要大于等于父類的
這個Java類必須具有一個無參的構(gòu)造函數(shù)
屬性必須私有化。
私有化的屬性必須通過public類型的方法暴露給其它程序,并且方法的命名也必須遵守一定的命名規(guī)范。
for(int val:a)
{
System.out.println(val);
}
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/77686.html
摘要:是一個由寫的存儲系統(tǒng)。是一個開源的使用語言編寫遵守協(xié)議支持網(wǎng)絡(luò)可基于內(nèi)存亦可持久化的日志型數(shù)據(jù)庫,并提供多種語言的。它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因為值可以是字符串哈希列表集合和有序集合等類型。 REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統(tǒng)。Redis是一個開源的使用ANSI C語言編寫、遵...
摘要:是一個由寫的存儲系統(tǒng)。是一個開源的使用語言編寫遵守協(xié)議支持網(wǎng)絡(luò)可基于內(nèi)存亦可持久化的日志型數(shù)據(jù)庫,并提供多種語言的。它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因為值可以是字符串哈希列表集合和有序集合等類型。 REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統(tǒng)。Redis是一個開源的使用ANSI C語言編寫、遵...
摘要:操作之連接以及簡單操作下載對應(yīng)的驅(qū)動包下載創(chuàng)建一個連接類連接主機(jī)地址端口號登錄密碼連接服務(wù)器權(quán)限認(rèn)證連接完成會返回緩存鏈接錯誤查詢所有中的查詢所有的為通配符清除所有的中的是清除所有的的命令如果清理完成,會返回完整的代碼聲明對象測試地址端口密 Java操作Redis之連接以及簡單操作 1.下載對應(yīng)的驅(qū)動包 下載 jedis.jar :https://mvnrepository.com/a...
摘要:我的是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)。因為我心理很清楚,我的目標(biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學(xué)習(xí)計劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...
閱讀 1611·2021-11-04 16:10
閱讀 3011·2021-09-30 09:48
閱讀 2896·2019-08-29 11:31
閱讀 1637·2019-08-28 18:22
閱讀 3287·2019-08-26 13:44
閱讀 1378·2019-08-26 13:42
閱讀 2908·2019-08-26 10:20
閱讀 819·2019-08-23 17:00