java new对象 User user; 和 User user = null; 有什么区别
PHP中文网
PHP中文网 2017-04-18 10:32:27
0
5
703

User user;

User user = null;
这两种写法有什么区别呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(5)
洪涛

這需要看 User user;出現在哪裡,先放結論:

  1. 如果是物件的屬性(field),則兩種寫法沒有區別。

  2. 如果是方法中的局部變量,若方法中沒有其他地方對user賦值,則編譯錯誤。

如果是物件的屬性,那麼在編譯的時候,java編譯器會自動為field賦初值(原始型別為預設值;參考型別為null)。例如下面的程式碼:

public class TestInitialization {
    private User userA;
}

編譯後,使用javap查看字節碼,紅色部分為編譯器自動賦初值的過程:

如果是方法中的局部變量,編譯器不會自動賦初值。 User user;只是定义的变量user,但并未给user在内存中分配空间,没有初始化,无法通过编译;User user = null;只是定義的變數user,但並未給user在記憶體中分配空間,沒有初始化,無法通過編譯;User user = null;不僅定義了變數user,也為user分配了記憶體空間,user現在指向null。

那么问题来了`null`又是个什么鬼?
http://stackoverflow.com/questions/2707322/what-is-null-in-java
阿神

如果user是局部變數: 在第一次賦值 (包括初始化為null) 之前使用user是編譯錯誤

賦值後沒區別

PHPzhong

好像是一樣的

Ty80

沒有差別 , 預設的初始化值為null

PHPzhong

沒有= 在棧裡面沒有開空間給他。 加上=null 就在堆疊裡面給他指定了一個空的佔位符

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!