首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android/Java 對象聲明與實例化區別:null 與 new 的差異

     編輯:程式設計綜合問答

代碼對比

// 1. 僅聲明引用
MyClass a;           // a 為 null,未分配堆內存

// 2. 聲明並實例化
MyClass a = new MyClass(); // 等價於
MyClass a;                // 引用
a = new MyClass();        // 在堆上分配對象,a 指向該內存地址

圖解

對象內存模型

關鍵點

  • 聲明 (Declaration):在棧上創建引用變量,默認值 null,不佔用堆內存。
  • 實例化 (Instantiation):new 在堆上分配對象內存,調用構造函數初始化,返回地址賦給引用。
  • 引用變量 ≠ 對象本身:多個引用可指向同一對象;引用賦 null 不銷毀對象,由 GC 回收無引用對象。

常見誤區

「MyClass a = new MyClass a 應該是空的吧」

語法錯誤:new MyClass() 後不跟變量名。正確是 MyClass a = new MyClass();,此時 a 指向有效對象,**不為空**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved