一、對象
1、面向對象:所有皆對象,程序是對象的組合,都有自己的存儲空間,同類型能接收相同消息,類就是相同屬性的事務總稱
2、利用訪問控制避免接觸不該接觸的,通過接口瞭解如何使用而不需要知道具體實現
3、類的相互嵌套引出了“組織”,也就是類包含類
4、繼承實現代碼複用,達到可擴展
5、多態的動態綁定在運行期才知道具體調用(向上轉型),抽象類不能實現,抽象方法只能在抽象類中,且子類需實現它除非子類也是抽象類
6、容器只能存儲對象,所有對象的頂級都是Object
7、GC解決內存釋放
8、異常處理解決錯誤
9、多線程解決並行運算
10、保存位置:寄存器、堆、棧、靜態區域、常量存儲、硬盤或流
11、應用:創建(new),變量,基本類型(八種),數組,作用域(花括號),類創建(class)
12、變量:成員變量/全局變量(堆中,因爲對象在堆中)和本地變量/局部變量(基礎類型在棧,對象在堆),局部變量不可用修飾符也不會自動初始化也不可用static
13、方法:返回類型 方法名(){}
14、包和引入:包(package)解決了類型衝突,引入(import)提供其他類的引用方式
15、靜態:static類型的數據或方法不屬於某一個對象,共用一片內存
二、程序流程
1、運算符多數只能修飾基礎類型,除了“=”,“==”,“!=”,String還支持“+”,“+=”
2、普通算術運算符、一元運算符、自動增減、關係運算符、邏輯運算符(短路)、移位運算(<<,<<<)、三元運算符(if-else)、自動向高位轉型
3、if-else、while、do-while、for、break、continue、switch-case(break,default)
三、程序初始化
1、構造器:沒有返回值,當存在有參的構造器則系統不會有默認無參構造器(即不能直接new無參的對象)
2、this:指向當前對象,多用於構造器間調用
3、static:依賴於類而不是對象,沒有this
static變量/代碼塊:內存中只有一份,創建對象時最先加載,不能爲局部變量
static方法:static方法不可調非static方法/變量,相反則可以
4、final:會對變量,方法,類進行優化,提高性能,多線程下安全,編譯期綁定
final變量:需賦初始值(聲明時或者構造器中),修飾變成常量,若修飾對象只是引用爲常量,對象屬性值仍可變,接口中變量都final
final方法:不能被重寫(private方法默認會加上final)
final類:不能被繼承(該類方法也就默認爲final)
5、abstract:
abstract方法:必須在abstract類中,沒有方法體(interface中方法都是)
abstract類:不能被new,內部可以有非abstract方法
6、finalize:GC回收前調用的方法,強行執行回收(System.gc())
7、重載:參數個數、參數類型、不同類型下參數順序(跟返回值或權限無關),子類和父類之間也可以形成
四、訪問控制
1、public、protected、friendly、private
2、class不能用private或者protected(內部類除外)
3、perr()和assert()斷言測試
五、繼承
1、繼承中重寫子類返回值也要一樣,修飾符範圍要更大,static和final的不能被繼承
2、子類父類定義相同的字段,父類的會隱藏,可用super()調用
3、子類可以調用父類非private的屬性或者方法
六、多態
1、三條件:繼承、重寫和向上轉型
2、內部類實例化用 OutClass.InClass test = new OutClass.InClass()
七、集合
1、Collection -- List -- ArrayList、LindedList
Set -- HashSet、TreeSet
Map -- HashMap、TreeMap、HashTable
2、排序:
Comparable:Person implements Comparable,Collections.sort(list)
Comparator:PeopleComparator implement Comparator,Collections.sort(list,new PeopleComparator())
八、異常
1、Throwable -- Error:Error是系統級別錯誤,是不可預測的
Exception -- Checked Exception:可檢查異常,除了RuntimeException及其子類外都是,在程序中顯式catch或者throws
Unchecked Exception:不可檢查異常,RuntimeException及其子類外都是,不需在程序中顯式處理
2、常見異常:NullPointerException、ClassNotfoundException、IOException、ClassCastException、FileNotFoundException、IndexOutOfBoundsException、SQLException