第五章 初始化與清理

用構造器確保初始化

類里的數據成員,有三個途徑初始化:

  • 默認初始化,一般都為0。即使沒有默認構造器,也會初始化
  • 直接初始化,就是直接賦值
  • 構造器(構造函數)初始化

重載

涉及基本類型的重載需要注意一下

  • 常數被當做int
  • 如果傳入的數據類型小于方法中聲明的形式參數,自動提升
  • char略有不同,如果無法找到恰好接受char參數的方法,就會把char提升為int
    注意不要通過返回值區分重載方法

默認構造器

默認構造器就是無參數構造函數,可以更改默認構造器。
如果定義了構造器,編譯器就不會自動創建默認構造器

class Bird{
       Bird(int i){}
       Bird(double i) {}
 }
new Bird();//這樣就會找不到構造器

this關鍵字

  • this關鍵字只能在方法內部使用,表示對“調用方法的那個對象”的引用。但要注意在方法內部調用同一個類的另一個方法,就不比使用this,直接調用即可。
    當需要返回對當前對象的引用時,常常用return this
public class leaf{
int i=0;
leaf incres(){
        i++;
        return this;
}}
leaf x=new leaf();
x.incres().incres().i;//i=2
  • 將自身傳遞給外部方法時,必須使用this關鍵字。
  • 在構造器中調用構造器可以用this,必須放在構造器的開頭,一個構造器內只能有一個this。除了構造器可以調用構造器,其他任何地方都不可以調用

static的含義

  • static是沒有this的方法。(還不理解)
  • static方法不能調用非靜態方法。可以直接通過類調用(主要用途)
  • 在類中置入static方法就可以訪問其他static方法和static域

清理:終結處理和垃圾回收

finalize()函數后面再深入學習

成員初始化

默認初始化是類的數據成員。而方法的數據成員需要手動。
自動初始化在構造器被調用前執行。

初始化順序

變量定義的先后順序決定了初始化的順序。即使變量定義散布于方法定義之間,他們仍舊會在任何地方(包括構造器)被調用之前得到初始化。

靜態數據的初始化

靜態初始化只有在必要時刻才會進行。只有第一次訪問靜態數據是被初始化,此后,靜態對象不會再次被出書畫。

總結對象的創建過程:

  1. 即使沒有顯示使用static關鍵字,構造器實際上也是靜態方法。當首次創建類型為Dog的對象時,或者Dog類的靜態方法/靜態域首次被訪問時,Java解釋器必須查找類途徑,以定位Dog.class.
  2. 然后載入Dog.class, 有關所有靜態初始化的動作都會執行。因此,靜態初始化只在class對象首次加載的時候進行一次
  3. 當用new Dog()創建對象的時候, 首先將在堆上為Dog對象分配足夠的存儲空間、
  4. 這塊存儲空間被清零。設置為默認值0 or null
  5. 執行所有出現于字段定義處的初始化動作
  6. 執行構造器

數組的初始化

  • 數組特殊的初始化是由一對花括號完成的,等價于new
int[] a1={1,2,3,4,5};
int[] a2=a1;//兩者指向同一片內存空間
a1.length;//length是數組的固有成員
  • 直接用new在數組里創建元素
int[] a=new int[num];
int[] b;
b=new int[num];
  • 可以用花括號括起來的列表初始化對象數組
Integer[] a= {new Integer(1), new Integer(2), 3,};
Integer[] b=new Integer[]{new Integer(1), new Integer(2), 3,};
System.out.println(Arrays.toString(a));
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 5.1 用構造器確保初始化 注意變量聲明、定義、賦值和初始化的區別:image.png 注意成員變量在類內初始化和...
    大海孤了島閱讀 202評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,754評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 聽說會做飯的妹子最能抓住男人的心,而會做菜的男人簡直就是男神一般的存在,萬千妹子臣服于“身下”(此處應打碼)。說起...
    罐頭九九閱讀 644評論 1 2
  • 對于藥品、食品行業來說 商品效期管理是一項很重要的工作項 今天就跟大家分享效期商品是怎么管理的 每個商品都有一定使...
    藥品采購技能與excel技能閱讀 3,123評論 0 2