CoreJava易忘基礎知識點

接口:

 接口的語法:組成部分與抽象類相似,用interface關鍵字定義,裏面只有公開靜態常量(final修飾)和公開抽象方法,使用時用implements,沒有構造方法,沒有動態代碼塊和靜態代碼塊

接口的微觀概念:是一種能力和約定

接口的意義:當父類的方法種類無法滿足子類需求的時候,可以通過實現接口來擴充子類的能力

接口引用僅可以調用接口中所聲明的方法,不可以調用實現類中獨有的方法(可強轉回實現類本身類型,再調用獨有的方法)

接口與接口之間可以多繼承,類與接口之間也可以多實現,調用接口之後實現方法要記得加public(與接口方法屬性類型一致)

接口回調:現有接口的使用者,再有接口的實現者

接口的好處:1)程序的耦合度降低 2)更自然的使用多態 3)設計與實現完全分離 4)更容易搭建程序框架 5)更容易更換具體實現

ps:MyInterface  mi = new MyClass();   同父類引用只能調用父類的屬性方法,或者是子類覆蓋的方法 ,不可調用子類獨有的屬性和方法

   

三個修飾符:

final:不可被繼承,不可更改,不能被覆蓋,所有被final修飾的變量只能賦值一次,可以先聲明再賦值(注意如果使用的時候,不要出現在有默認值的情況,比如作爲實例變量的時候)

abstract:只有方法聲明,沒有方法實現(需要包含在抽象類中),即抽象方法不能有主題,能修飾類和方法,但是不能修飾屬性,抽象父類可以作爲子類引用,此類不能被new對象,但可以聲明引用

        abstract的兩個作用:    1)可以被子類繼承,提供共性屬性和方法   2)可聲明爲引用,強制使子類用多態

static:靜態屬性是整個類共同持有的共享空間(一份),任何對象修改,都會影響其他對象;靜態方法可以通過“類名.靜態方法”進行訪問,直接訪問,無需創建對象;

    實例屬性屬於對象,靜態屬於類,靜態方法允許直接訪問靜態成員,靜態方法中不能使用this,super關鍵字,靜態方法可以繼承但沒有多態

靜態屬性會在首次類加載的時候執行一次(僅一次)

static的五種可以修飾的元素分別爲:屬性,方法,代碼塊,類,導包

幾種常量的賦值機會

實例常量:顯示初始化,動態代碼塊,構造方法

靜態常量:顯示初始化,靜態代碼塊

局部常量:顯示初始化

類加載:

Jvm(java虛擬機)首次使用某個類時,需要通過CLASSPATH查找該類的.class文件,將.class文件中對類的描述信息加載到內存中進行保存

類加載時的執行順序爲:靜態屬性,靜態代碼塊,動態代碼塊,構造函數

當創建子類對象時,子父類的類加載的執行順序是:

父類--靜態變量——父類--靜態初始化塊——子類--靜態變量——子類--靜態初始化塊

父類--變量——父類--初始化塊——父類--構造器——子類--變量——子類--初始化塊——子類--構造器

多態:

多態的語法/定義:父類引用指向子類對象

兩種應用場景:   1)使用父類作爲方法形參    2)使用子類作爲返回值

多態的好處:    1)屏蔽子類間的差異  2)靈活,耦合性低

父類引用僅可調用父類所聲明的屬性和方法,不可調用子類的屬性和方法,當構成多態後,可以通過子類的方法重寫/覆蓋而調用子類的方法

向上轉型:子類對象轉爲父類對象

向下轉型:父類對象轉爲子類對象(使用instanceOf進行判斷是屬於某類對象)

繼承:

程序中的繼承是類與類之間的贈與或獲得;繼承可以提高代碼的複用性和可擴展性,java爲單繼承,但是可以多級繼承;

父類的抽象:在一組相同或類似的對象中,抽取其共性部分,定義在父類中,實現重用

構造方法只負責創建本類對象,不能被繼承;super()在子類的每個構造方法內都隱式存在

在實際開發中,如果要爭強某個類中的一個方法的功能,可以繼承這個類,然後覆蓋這個類的方法,在覆蓋時,可以利用super關鍵字調用父類中的實現,然後在父類實現的基礎上,增加子類特有的新功能

封裝:

儘可能隱藏對象的內部實現細節,控制對象的修改及訪問權限,訪問修飾符:private

this用法:  1)調用實例屬性,實例方法     2)調用本類中的其他構造方法

對象的創建流程: 1)開闢空間   2)爲各個屬性賦初始值  3)執行構造方法中的代碼  4)[將對象的地址賦值給變量]

面向對象:

一切客觀存在的事物都是對象,萬物皆對象;任何對象都有自己的特徵和行爲

對象: 1)特徵,稱爲屬性,代表對象有什麼     2)行爲,稱爲方法,代表對象能做什麼

類的抽取:在一組相同或類似的對象中,抽取其共性的行爲特徵,保留我們所關注的部分

類:定義了對象應具有的屬性和行爲,類是對象的模板

對象:擁有多個特徵和行爲的實體,對象是類的實例

實例變量是有默認值的;系統默認提供無參構造方法,也就是說如果有有參構造方法,那麼系統便不會再提供無參構造方法

重載:一個類中定義多種重名的方法;好處之一是:屏蔽使用差異

引用:

引用相當於一個指針,指向了內存中的對象

構造方法是比較特殊的方法:

    1)構造方法沒有返回值類型(void也不行)

    2)構造方法的方法名和類名相同

    3)構造方法不能手動調用,只能在對象創建時自動調用(但是在我們後來學完關鍵字的時候,可以調用)

實例變量的各種類型的默認值: 字符:\u0000   引用類型:null  boolean:false

打印引用類型或者對象數據類型的變量的時候,輸出的是地址

引用數據類型和對象數據類型用“==”的時候,比較的是地址,所以字符串內容比較的時候用equals函數

函數:

定義:實現特定功能的一段代碼塊,可重複使用,在需要執行函數代碼的位置通過函數名稱進行調用

形參相當於一個局部變量,實現是爲局部變量的賦值,無法通過函數調用轉換參數的類型

其他:

在switch裏,default如果不是寫在最結尾的話,也要寫break,要不然也會按順序執行以下default下邊的一個操作

JDK1.7之後,纔可以在switch裏使用字符等其他類型

遞歸:從大到小,從宏觀到微觀,每一次函數的調用,解決的是相同的問題,因參數的不同,導致每次調用細節發生變化

數組與循環:

循環分爲四個部分:初始部分,循環條件,循環操作,迭代部分

多層循環裏面要記得給i,j,k每次循環的時候重新賦值爲0一下(看情況)

數組定義:一組連續的存儲空間,存儲多個相同類型的值

數組複製的方式暫時有4種:

    1)循環將原數組中的所有元素逐一賦值給新數組

    2)System.arraycopy(原數組,原數組起始,新數組,新數組起始,長度)

    3)java.util.Arrays.copyOf(原數組,新長度)//返回值是帶有原值的新數組

    4)數組是一個引用類型,所以可以使用地址的替換的方式進行賦值

所有能用循環解決的問題,遞歸都能解決,能用遞歸解決的問題,循環也都能解決

outer:for(...){……  coutinue outer;//會從outer處開始下次循環}

數據類型:

i= i+1與i+=1的區別是,第一個會轉型,往上升到int類型,第二種方式會固定類型,超出範圍的時候會循環

字符遇見“+”是先轉化爲ASCII碼再進行相加,字符串遇見“+”的時候爲拼接,但是注意的是,加號兩端必須有一段爲字符串類型的時候才能出發toString方法

小數的默認類型是double,在計算過程中沒int,均爲type或short,計算結果仍提升爲int

數據類型分爲基本數據類型和引用數據類型

變量:變量是計算機內存中的一塊存儲空間,是存儲數據的基本單元

JVM使用solt槽來臨時存儲數據,solt最大不超過32位也就是說不超過int類型(4字節,32位)

0的ASCII碼是48,A的是65,a的是97

由於float與double類型都是屬於不精確類型所以在計算的時候會得到一些不精確的答案

比如:System.out.println(1.0-0.9);輸出的答案卻是0.09999999999999998

這個時候,我們可以使用一種新的方法去精確答案 BigDecimal System.out.println(new BigDecimal(1.0-0.9).floatValue());  這樣得到的答案是0.1

命名規範:

cn.com.company.department.group.project.module.Xxxclass



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章