java學習筆記

來源:互聯網
上載者:User

java語言積累

1、什麼時候“被覆蓋”:

     靜態方法不能被覆蓋,只能被隱藏,執行個體方法可以被覆蓋。

01: class Super

02: {

03: static String greeting()

04: {

05: return "Goodnight";

06: }

07:

08: String name()

09: {

10: return "Richard";

11: }

12: }

 

 

01: class Sub extends Super

02: {

03: static String greeting()

04: {

05: return "Hello";

06: }

07:

08: String name()

09: {

10: return "Dick";

11: }

12: }

 

 

01: class Test

02: {

03: public static void main(String[] args)

04: {

05: Super s = new Sub();

06: System.out.println(s.greeting() + ", " + s.name());

07: }

08: }

結果:Goodnight, Dick

l 試圖用子類的靜態方法隱藏父類中同樣標識的執行個體方法是不合法的 編譯器將會報

l 試圖用子類的執行個體方法覆蓋父類中同樣標識的靜態方法也是不合法的 編譯器同樣

會報錯

l 靜態方法和最終方法 帶關鍵字final 的方法不能被覆蓋

l 執行個體方法能夠被覆蓋

l 抽象方法必須在具體類1中被覆蓋

 

2、String.equals()與===區別

    equals比較的是字串內容;==比較的是對象的引用的值.

    01: public class StringExample

02: {

03: public static void main (String args[])

04: {

05: String s0 = "Programming";

06: String s1 = new String ("Programming");

07: String s2 = "Program" + "ming";

08:

09: System.out.println("s0.equals(s1): " + (s0.equals(s1)));

10: System.out.println("s0.equals(s2): " + (s0.equals(s2)));

11: System.out.println("s0 == s1: " + (s0 == s1));

12: System.out.println("s0 == s2: " + (s0 == s2));

13: }

14: }

 

結果:

s0.equals(s1): true

s0.equals(s2): true

s0 == s1: false

s0 == s2: true

常量池:是指在編譯時間期被確定的值,並儲存在已編譯的class檔案中的一些資料。

3、java是強型別語言

    它只支援8種基本類型資料類型。而8種資料類型始終被描述在JVM中。

 

4、那是建構函式

一般建議:只有構造方法才與類名同名.

   在一個類中假如沒有顯式的建構函式存在

那麼Java 會自動為其配備一個預設的無參數的建構函式而且這個建構函式是空的這種情

況若且唯若類中沒有聲明任何一個建構函式時才會發生假如類中已經存在了一個帶任意參

數的建構函式那麼Java 就不會再自動提供預設的無參數的建構函式了

 

01: public class IntAdder

02: {

03: private int x;

04: private int y;

05: private int z;

06:

07: public void IntAdder()

08: {

09: x = 39;

10: y = 54;

11: z = x + y;

12: }

13:

14: public void printResults()

15: {

16: System.out.println("The value of 'z' is '" + z + "'");

17: }

18:

19: public static void main (String[] args)

20: {

21: IntAdder ia = new IntAdder();

22: ia.printResults();

23: }

24: }

結果為0;

5、不能訪問被覆蓋的方法

   可以通過包含關鍵字super 的方法調用運算式來訪問被覆蓋的方法注意嘗試用全域

名或強制轉換為父類型以求訪問一個被覆蓋的方法都是無效的

    無法訪問父類中被子類覆蓋的方法的原則僅僅適用於執行個體方法也就

是非靜態方法

   假如你懷疑你所使用的某個對象實際上是一個子類的執行個體那麼你可以調用它的getClass().getName()方法來判斷它的真實身份.

   又如果你是編寫增加了新功能的子類的程式員那你必須確保進行相容性測試或者保證在編寫程式時任何新增的功能都是通過增加新的方法而不是覆蓋父類方法實現的

6、避免落入隱藏變數的陷阱

理解變數成員是如何被隱藏的

(1)不同類型的Java變數:

   Java一共有6種變數類型:類變數、執行個體變數、方法參數、建構函式參數、異常處理器參數以及局部變數。

   類變數包括:類中聲明的待用資料成員、介面體中聲明的靜態成員和非待用資料成員。

   執行個體變數:在類體中聲明的非靜態變數。

   方法參數:用來傳入一個方法體的。

   建構函式參數:用來傳入一個建構函式體的。

   異常處理參數:用來傳入一個try語句的catch塊中的。

   局部變數:在一個代碼塊中或一個for語句中聲明的變數。

01: public class Types

02: {

03: int x; // instance variable

04: static int y; // class variable

05: public Types(String s) // s is a constructor parameter

06: {

07: // constructor code f.

08: }

09: public createURL(String urlString) //urlString is a method parameter

10: {

11: String name = "example"; // name is a local variable

12: try

13: {

14: URL url = new URL(urlString);

15: }

16: catch(Exception e) // e is a exception-handler parameter

17: {

18: // handle exception

19: }

20: }

21: }

(2)何種變數能夠被隱藏:

   執行個體變數和類變數能夠被隱藏。

(3)如何訪問被隱藏的變數

     this:可以限定一個正被局部變數隱藏的執行個體變數

     super:可以限定一個正被子類隱藏的執行個體變數。

(4)變數隱藏與方法覆蓋的區別

     一個類的執行個體,無法通過使用全域名,或者強制轉換自己為其父類的類型,來訪問父類中的被覆蓋的方法。

      強制轉換子類的執行個體為父類類型後,我們就可以訪問父類中被隱藏的變數。

 

      資料隱藏與方法覆蓋的另一個不同之處:靜態方法不能覆蓋父類的執行個體方法。而靜態變數卻可以隱藏父類同名的一個執行個體變數。

      執行個體方法也不能覆蓋父類的靜態方法,而執行個體變數卻可隱藏父類同名的變數成員。

7、提前引用

     類變數以及靜態初始化塊是在類被JVM載入時初始化操作的。

     靜態初始化塊和類變數時按照其在代碼中出現的順序依次執行初始化操作的。

     若用方法調用初始化靜態變數,那麼必須保證方法不依賴於他們之後聲明的其它靜態變數。

8、設計易被繼承的構造方法

設計合適的構造方法滿足需求。

9、通過引用傳遞基本類型

    基本類型不是對象,不能通過引用來傳遞。

10、布林運算子與“短路”運算子

       布林運算子:& 和 |  (兩邊都是boolean型值,那麼&才被認為是布爾運算)

       位元運算符  :&& 和 ||  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.