首先,任何变量在C语言中不赋值的话,会是乱码的形式,可能有安全问题。所以java修正了这点,对于局部变量强制让你赋值。至于为什么成员变量有自己的初始值,而不需要强制赋值,那是因为new对象的时候,构造函数帮你初始化了。一个典型的代表是:为什么空构造函数啥也不做也非得存在那么搞笑?虽然看起来是空的什么都没做,但底层做了很多见不到的工作,不单只是为了申请内存,在底层里申请完内存后就同时开始初始化,赋一些默认值。这点在C语言仿java构造函数来构造结构体时深有体会。
首先,任何变量在C语言中不赋值的话,会是乱码的形式,可能有安全问题。所以java修正了这点,对于局部变量强制让你赋值。至于为什么成员变量有自己的初始值,而不需要强制赋值,那是因为new对象的时候,构造函数帮你初始化了。一个典型的代表是:为什么空构造函数啥也不做也非得存在那么搞笑?虽然看起来是空的什么都没做,但底层做了很多见不到的工作,不单只是为了申请内存,在底层里申请完内存后就同时开始初始化,赋一些默认值。这点在C语言仿java构造函数来构造结构体时深有体会。