1. 程式人生 > >java知識點---第二部分

java知識點---第二部分

但是 即使 fin 被子 pub 當前 名稱 對象實例 才會

  • 面向對象的特點:
    • 封裝性:將對象的屬性與行為看成一個整體;信息隱蔽:可以將對象的屬性與行為保護起來,不讓外界知道或者進行修改
    • 繼承性:可以繼承一些已知的類,極大的減少了代碼量
    • 多態性:方法的重載,對象多態。
    • 類與對象:汽車的設計圖紙是類,具體生產出的某臺汽車是對象。
    • 類中的屬性必須都進行封裝,封裝的屬性必須通過setter和getter進行訪問。
    • 用private聲明的屬性或方法只能在其類的內部被調用,而不能在類的外部被調用
    • 構造方法
      • 構造方法的作用就是為類中的屬性初始化
      • 構造方法的名稱必須與類名稱一致
      • 構造方法的聲明處不能有任何返回值類型的聲明,不能使用return返回值
      • 只要是類就必定存在構造方法,如果一個類中沒有聲明構造方法,那麽在編譯時,會自動生成一個無參的構造方法。如果一個類中已經明確的聲明了一個構造方法,那麽就不會再自動生成無參的構造方法,一個類中應該保證至少有一個構造方法。
  • 對象
    • 要使用對象就必須要對對象進行實例化
    • 對象的內容存放在堆內存中,棧內存中保存的是內存存放的地址。只有對象通過new關鍵字實例化之後才會在堆內存開辟空間進行保存
    • 對象屬性的默認值:字符串的默認值為null,整數的默認值為0
    • 一個棧內存空間只能指向一個堆內存空間,如果想要指向其他的堆內存空間,那麽需要先斷開已有的指向才可以重新分配新的空間。斷開指向的空間便成了垃圾空間,在java中有垃圾回收機制GC會不定期的釋放空間。
  • String類
    • 一個字符串就是一個String類的匿名對象,該對象已經開辟了堆內存空間。
    • string類的實例化建議使用直接賦值的方法,如果采用new關鍵字的方式進行實例化,不管該對象是否已經存在,而是直接開辟新的空間,這樣會造成垃圾。
    • 使用直接賦值的實例化方法:String str=“hdsodn”;這種方式產生的對象在一個對象池裏,如果發現要實例化的對象已經存在,便不再重新定義。這種入池的操作是一種共享的模式。
    • 字符串的內容一旦聲明則不可改變。
  • this關鍵字
    • 調用本類中的方法
    • 表示類中的屬性
    • 可以使用this調用本類的構造方法,必須放在構造方法的首行
    • this表示當前對象
  • static關鍵字
    • 被static關鍵字定義的屬性,可以被所有對象共享,可以直接使用類名稱定義,該屬性稱之為全局屬性(靜態屬性)
    • 類中的方法被static關鍵字定義後,該方法可以直接由類進行調用
    • 非static聲明的方法可以去調用static聲明的屬性或方法,但是static聲明的方法是不能調用非static類型聲明的屬性和方法。原因是static定義的方法在對象未被實例化時就可以被類名調用,而非static定義的方法必須要對象實例化後才可以被調用。
  • java中的常用內存區域
    • 棧內存空間:保存所有的對象名稱(保存了引用的堆內存空間的地址)
    • 堆內存空間:保存每一個對象的具體屬性內容
    • 全局數據區:保存static類型的屬性
    • 全局代碼區:保存所有的方法定義
  • final關鍵字
    • 使用final聲明的類不能有子類
    • 使用final聲明的方法不能被子類所覆寫
    • 使用final聲明的變量既為常量,該常量不可以修改,全部的字母都大寫
  • 抽象類
    • 抽象類就像是一個“模板”,他的目的是設計者依據他的格式來修改並創建新的類,但是抽象類並不能直接創建對象,只能是通過抽象類派生出新的類,再由新的派生類創建對象。
    • 一個子類只能繼承一個抽象類
    • 包含一個抽象方法的類必須是抽象類
    • 抽象類和抽象方法都要使用abstract關鍵字聲明
    • 抽象方法只需要聲明不需要實現
    • 抽象類必須要被子類繼承,子類(如果不是抽象類)必須要覆寫抽象類中的所有的抽象方法。
  • 接口(interface)
    • 接口是由全局變量和公共的抽象方法組成。接口中的抽象方法必須定義為public訪問權限,即使省略不寫,也是public訪問權限,而不是default權限
    • 一個子類可以同時實現多個接口(implements),該子類必須要同時覆寫全部接口的抽象方法
  • 對象的多態性(沒太理解)
    • 對象的向上轉型 父類 父類對象 = 子類實例
    • 對象的向下轉型 子類 子類對象 = (子類)父類實例
    • 在發生向下轉型之前必須要先向上轉型,否則會發生對象轉換異常。
  • instanceof關鍵字:
    • 判斷一個對象是哪個類的實例
    • 對象 instanceof 類
  • Object類
    • 所有的類都有一個公共的父類Object。所有的對象都可以向Object進行轉換,一切的引用數據類型都可以使用Object進行接收。
    • Object類常用的方法:
      • toString():取得對象內容
      • equals():對象進行比較
      • hashCode():取得hash碼
    • 包裝類
      • 將基本數據包裝成類,這樣基本數據類型可以成為一個對象
      • 對象型包裝類(Object的直接子類):Boolean(boolean)、Character(char)
      • 數值型包裝類(Number的直接子類):Interger(int)、Short(short)、Long(long)、Float(float)、Double(double)、Byte(byte)
      • 裝箱與拆箱(JDK1.5之後提供了自動裝箱與拆箱的操作)
        • 裝箱:將基本數據類型變成包裝類:int x=30;Integer i =new Integer(x);
        • 拆箱:將包裝類變為基本數據類型:int temp=i.intValue();
      • 將基本數據類型轉換為字符串
        • 在String類型中有valueOf()方法,可以將基本數據類型轉換為String類型
        • 也可以使用“+”這種方式,但是這種方式會產生垃圾,不建議使用
    • 訪問控制權限
      • private:私有訪問權限,可以用在屬性的定義與方法的聲明上,一旦使用了private關鍵字聲明,則只能在本類中進行訪問
      • default:默認的訪問權限,可以被本包中的其他類所訪問,但是不能被其他包的類所訪問
      • protected:受保護的訪問權限,只能被本包或者不同包的子類所訪問
      • public:公共訪問權限:可以在所有類中被訪問,不管是否在同一個包中。

java知識點---第二部分