天天看點

Java基礎之五、Java程式設計思想(1-7)

一、對象導論

1:多态的可互換對象

  面向對象程式設計語言使用了後期綁定的概念。

  當向對象發送消息時,被調用的代碼直到運作時才能确定。也叫動态綁定。

2:單根繼承結構

  所有的類最終都繼承自單一的基類,這個終極基類的名字就是

Object

3:對象的建立和生命期

  對象的資料處于作用域,Java完全采用了動态記憶體配置設定方式(基本類型隻是一種特例)

二、一切都是對象

1:基本類型

  基本類型是一個并非是引用的“自動”變量。這個變量直接存儲“值”,并置于堆棧中

2:Java中的數組

  Java確定數組會被初始化。而且不能在它的範圍之外被通路

3:作用域(scope)

  Java對象不具備和基本類型一樣的生命周期。當用new建立一個Java對象時,它可以存活于作用域之外

  

{

   String s = new String("a string");   } // End of scope 

引用 

s

 在作用域終點就消失了。然而,

s

 指向的 String 對象仍繼續占據記憶體空間

  import 關鍵字

  訓示編譯器導入一個包,也就是一個類庫,Java中所有的代碼都必須寫在類裡。特定類 

java.lang

 會被自動導入到每一個Java檔案中。

5:static 關鍵字

  • 隻想為某一特定域配置設定單一存儲空間,而不去考慮空間要建立多少對象,甚至根本就不建立任何對象。
  • 希望某個方法不與包含它的類的任何對象關聯在一起。也就是說,即使沒有建立對象,也能夠調用這個方法。
  • static

    作用于字段時,會改變資料的建立方式
  • static

    方法的一個重要用法就是在不建立任何對象的前提下就可以調用它;
  • static

    方法就是沒有

    this

    的方法,不能直接調用非靜态方法,但可以傳遞一個對象引用到靜态方法裡,然後通過這個引用(和

    this

    效果相同)來調用非靜态方法和通路非靜态資料成員。。

三、關系操作符

1:

==

 和 

!=

 比較的是對象的引用

2:特殊方法

equals()

 的預設行為也是比較引用

四、控制執行流程

1:if else

2:switch

  JDK1.7開始,switch開始支援String作為選擇因子。在switch語句中,String的比較用的是

String.equals()

  是以,需要注意,傳給switch的String變量不能為null,同時switch的case子句中使用的字元串也不能為null

五、初始化與清理

1:方法重載

  重載方法,方法名相同,形式參數清單不同(參數清單又叫參數簽名,包括參數的類型、參數的個數和參數的順序,隻要有一個不同就叫做參數清單不同)

2:重載限制

  • 聲明為final的方法不能被重載
  • 聲明為static的方法不能重載,但是能夠被再次聲明。
  • 重載方法的傳回類型可以相同也可以不同,但僅傳回類型不同不足以成為方法的重載。

  class Animal {

    public static void walk() { System.out.println("Animal行走方法"); }

  }

  public class Horse extends Animal {

    public void walk(String s) {

    System.out.println("Horse四條腿行走");

    }

    public static void main(String [] args) {

      new Horse().walk("");

    public static void walk() { //重新定義

    new Horse().walk();

3:成員初始化

  有變量在使用前都能得到恰當的初始化。

  Java 中類的成員變量會被自動初始化,但是方法裡頭的局部變量不會被自動初始化

  自動初始化的進行,它将在構造器被調用之前發生

  成員變量是基本類型,Java會自動初始化初值0;

  成員變量是引用類型,Java會自動初始化初值null;

4:對象的建立過程

  類加載檢查-->配置設定記憶體-->初始化零值-->設定對象頭-->執行成員變量的初始化-->執行init方法,執行構造方法

5:數組初始化

  初始化: 

    • int[] a = new int[3];

       初始化各元素值為 ,對于

      boolean

      ,初始值為

      false

      ;
    • int[] a = {1, 2, 3};

       初始化元素分别為

      1, 2, 3

六、通路權限控制

  • 同一個.java檔案,隻能有一個與檔案同名的public類,可以有其它非public類;
  • 同一個package内的不同檔案中的類,可以互相通路。
  • 不同package中的類,如需通路,需要使用全限定名,如biz.superalloy.MyClass或通過import把biz.superalloy包引進來;
  • default有時候也稱friendly,它是針對本包通路而設計的
  • 類中的成員變量,不聲明通路修飾符時,為“包通路權限”,有時也表示friendly,同一個檔案的不同類之間可以互相通路。
  • 如果沒能為類通路權限指定一個通路修飾符,它将會預設得到包通路權限。
  • 1. public修飾符具有最大的通路權限,可以通路任何一個CLASSPATH下的類,接口、異常等。它往往對于對外的情況,也就是對象或類對外的一種接口形式。
  • 2. default有時候也稱friendly,它是針對本包通路而設計的,任何處于本包下的類,接口,異常等,都可以互相通路,即使是父類沒有用protected修飾的成員也可以。
  • 3. protected修飾符它的主要作用就是保護子類的。它的含義在于子類可以使用它修飾的成員,其他的不可以,它相當于傳遞給子類的一種繼承的東西。
  • 4. private修飾符它的通路權限僅限于類的内部,是一種封裝(Java的三大特點之一,繼承,封裝和多态)的展現。
Java基礎之五、Java程式設計思想(1-7)

七、複用類

1:@Override注解-它的作用是告訴編譯器我想重寫這個方法,避免不必要的異常

2:final關鍵字-使用到final的三種情況:資料、方法和類

  • final 基本類型,資料編譯期常量在定義(聲明)時必須對其指派(聲明時也可以不賦(此時叫空白final),但必須在構造器中指派,是以final域在使用前總是被初始化)。
  • final常量常與

    static

    一起使用,強調隻有一份。
  • final 對象引用
  • final參數這一特性主要用來向匿名内部類傳遞資料
  • final方法-鎖定方法,以防任何繼承類修改它的含義。這是出于設計的考慮;
  • 類中所有的

    private

    方法都隐式地指定為是

    final

    的。由于無法取用

    private

    方法,是以也就無法覆寫它
  • final類不希望它有子類。因為final類禁止繼承,是以final類中所有的方法都隐式指定為是final的,因為無法覆寫它們

3:初始化及類的加載

  類的代碼在初次使用時才加載,通常是指加載發生于構造類的第一個對象之時,但是當通路static域或static方法時,也會發生加載

  (構造器也是static方法,盡管static關鍵字并沒有地寫出來。是以更準确地講,++類是在其任何static成員被通路時加載的++。)

4:初始化

  初次使用之處也是staic初始化發生之處

出處:轉載請注明 https://www.cnblogs.com/sun-null/