java面試題:權限修飾符&final關鍵字&拆箱裝箱&Static&內部類

四種權限修飾符:

yes可以訪問,no無法訪問

權限修飾符 public protected default private
同一個類 yes yes yes yes
同一個包 yes yes yes no
不同包子類 yes yes no no
不同包非子類 yes no yes yes

final的基本使用:

注意:

abstract 和 final關鍵字不能同時存在,因爲abstract必須覆蓋重寫,final不能覆蓋重寫

1.可以用來修飾一個類

表示當前這個類不能有任何的子類,自然無法重寫覆蓋

public  final class  類名稱

2.可以用來修飾一個方法

表示這個方法就是最終方法,也就是不能被覆蓋重寫

public  final 返回值  方法名()

3.可以用來修飾一個局部變量

表示這個變量是一個常量,無法更改

對於基本變量來說,不可改變是變量當中的數據不可改變

對於引用變量來說,不可改變是變量當中的地址不可改變

4.可以用來修飾一個成員變量

使用final,這個變量不可改變。

成員變量具有默認值,所以成員變量必須手動賦值

對於final的成員變量,要麼使用直接賦值,要麼通過構造方法賦值。二者選一,注意此時不能用setter方法。

拆箱&&裝箱:

裝箱:

Integer in =new Integer(1)
把基本數據類型轉化成包裝類

拆箱:

in.intvalue+2=3
把包裝類轉化成基本數據類型

自動裝箱:

Integer in=1;
相當於:Integer in =new Integer(1)
把int類型的整數賦值給包裝類。

自動拆箱:

in = in +2
相當於:in.intvalue+2=3
把integer類型數據轉換成int

Int怎麼轉換成字符串:

基本數據類型轉換字符串

1.String str=1+''; 加空格
2.integer.tostring(1)  使用包裝類tostring
3.String.valueof(1)     使用包裝類string

字符串轉換基本數據類型

integer.parseint(str)   包裝類parseint方法

static如何使用:

1.一旦使用了static修飾成員方法,就成爲了 靜態方法,靜態方法不屬於對象,而屬於類。

如果沒有static修飾成員方法,就必須創建對象,然後通過對象才能使用它

如果有了static關鍵字,那麼就不需要創建對象,直接使用類名稱進行調用

2.如果一個成員變量使用了static關鍵字,那麼這個變量就不屬於對象自己,而屬於所在的類。

多個對象共享同一份數據。

3.無論使用成員變量,還是成員方法,如果有了static都推薦使用類名稱調用

靜態變量:類名稱.靜態變量

靜態方法:類名稱.靜態方法()

4.靜態方法不能訪問非靜態變量

因爲:初始化的時候在內存先有的靜態內容,然後有非靜態內容,“先人不知道後人,後人知道先人”

5.靜態方法不能使用this,

因爲:this調用的是當前對象,而此時沒有對象

6.靜態代碼塊用來一次性的對靜態成員變量進行賦值

靜態代碼塊》構造函數》普通方法

內部類如何用:

成員內部類

一個類內部包含另一個類,在裏面的那個類就是成員內部類

內部類訪問外部類,隨意訪問,外用內,需要內部類對象

如何使用成員內部類?有兩種方式

1.間接方式:在外部類的方法中,使用內部類,然後調用時候只調用外部類的方法。

2.直接方式:外部類名稱.內部類名稱 對象名=new 外部類名稱().new 內部類名稱()

內部類如何訪問外部類重複成員變量?

外部類.this.外部類成員變量

局部內部類

一個類定義在一個方法內部,那麼就是一個局部內部類。

因爲只能通過方法調用,所以必須在方法中調用了局部內部類。

局部內部類,如果希望訪問所在方法的局部變量,那麼這個變量必須是有效final的。

類的權限修飾符在定義一個類的規則

外部類:public /default

成員內部類:public protect default private

局部內部類:什麼都不寫

匿名內部類

如果接口的實現類(或者是父類的子類)只需要使用唯一的一次,這種情況就可以省略該類的定義,而改爲匿名內部類,使用這種方式可以省略一個實現類。接口名稱 對象名 =new 接口名稱(){覆蓋重寫所有的抽象方法}

使用注意事項:

只是用一次,可以省略實現類

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