JAVA基礎整理(一)

一:面向對象與面向過程

  籠統說,一個流程簡單一個複雜,面向過程比如開車上路,能夠簡單羅列出幾個動做:上車,系安全帶,點火,出發;向過程比如造出一輛汽車,確定不能從焊鐵作起,第一步是收集所須要的各個部分(對象),經過必定的規律與邏輯去操做對象完成最終的結果。java

  對象是實際的東西,類是對象的模板,對對象的抽象,對象就按照類所規定的模板去造成實際的對象。算法

面向對象三大原則:

封裝:

  由於咱們不想向外部暴露咱們的數據,由於若是咱們的數據對外暴露的話,咱們的數據若是在某個被他人調用的地方被修改咱們是不可知的,因此有個封裝。你按我對外提供的接口進行操做,保證你不會對我對象內部的結構進行破壞。數組

繼承與多態:

多態,就是多種形態。多態大體有兩種狀況:安全

​ 第一,假如,一個動物類,動物有一個run方法,咱們用這個類描述動物的運動,而後有個貓,處於面向對象的相關聯思想,貓繼承自動物,而後貓不滿意這個方法,重寫了一個,貓的run的時候有一個叫的動做,不一樣對象,同一動做,最終執行的效果不一樣。ide

​ 第二:有一個貓,這個貓的run是有參數的,調用了貓的run方法,貓開始跑,每小時20邁,而後咱們再調用run方法,傳了一個魚給貓,貓吃了魚就更有動力,而後每小時30邁開始跑。同一個對象,同一個行爲,傳遞的消息不一樣,最終執行的效果不一樣。函數

  繼承與多態要一塊兒理解,繼承是基礎,多態是擴展。由於對象之間會有重複的代碼,因此咱們有了繼承,就像現實生活中子女繼承父母的資源同樣,但這種方法只能解決有關聯對象間的代碼重複問題。若是對象之間無關,解決代碼重複,咱們須要依賴AOP。線程

多態是在繼承的基礎上實現的,多態實現的三個必要條件:
繼承
方法重寫(override)
父類引用指向子類對象,例如:Human human = new Man() ,new Man() 是一個子類對象,用一個父類引用human來指向子類對象。code

二:內存管理分析(初步)

棧內存,堆內存,方法區(隸屬於堆裏,可是有必要單獨拉出來談)對象

棧內存:

基本數據類型 ,結構大體爲:變量名 :變量值 這樣的表格形式繼承

棧是線程私有的,連續的,不一樣線程之間沒法共享數據。

速度快

堆內存:

堆是線程間共享的,區域比棧大,速度慢,不連續的

存儲對象(在棧裏對象存儲的是一個地址,例如 張三:0X0001)對象張三具體的信息要去0X0001這塊內存塊裏找。

方法區:

存儲不變的東西:

類加載信息,靜態變量,字符串常量。也就是不依賴具體對象的信息。

三:垃圾回收算法入門(引用計數,引用可達,通用分代垃圾回收)這部分深刻要去看一遍《深刻理解java虛擬機》

引用計數法:

  每一個對象有一個引用計數屬性,新增一個引用時計數加1,引用釋放時計數減1,計數爲0時能夠回收。此方法簡單,沒法解決對象相互循環引用 的問題。(例如,)

引用可達:

  從GC Roots開始向下搜索,搜索所走過的路徑稱爲引用鏈。當一個對象到GC Roots沒有任何引用鏈相連時,則證實此對象是不可用的。不可達對象。

通用分代垃圾回收:(基礎時只須要知道有這幾種方法便可)

四:內存分析靜態變量,靜態方法,靜態初始化塊

  靜態變量與方法不須要具體的對象就能夠調用(用類名調用),靜態初始化塊new後就會調用了。

五:重寫Override返回值類型問題

方法的重寫(override)要遵循兩同兩小一大的原則:(子類方法相對於父類方法)

1)兩同
1.1)方法名相同
1.2)方法參數列表相同
2)兩小
2.1)返回類型若爲引用類型必須小於或等於父類的,若爲基本類型或者void則必須相同
2.2)拋出的異常必須小於等於父類的
3)一大
子類方法的訪問權限要大於等於父類的

六:javabean規則(一種類的規範)

這個Java類必須具備一個無參的構造函數
屬性必須私有化。
私有化的屬性必須經過public類型的方法暴露給其它程序,而且方法的命名也必須遵照必定的命名規範。

七:數組的定義,foreach的使用

for(int val:a)
{

System.out.println(val);

}

相關文章
相關標籤/搜索