我对Java中的变量初始化有困惑。据我所知,类变量获取默认初始化,而本地变量默认情况下不初始化。但是,如果我在使用new关键字的方法内创建数组,它默认会初始化。所有对象都是如此吗?是否使用new关键字初始化对象,而不管它是类变量还是局部变量?java中的初始化初始化
回答
所有对象都是如此吗?不管它是类变量还是局部变量,是否使用new关键字初始化对象 ?
当您使用new
关键字。这意味着你有初始化你的对象。如果它在方法级别或实例级别声明,则无关紧要。
public void method(){
Object obj1;// not initialized
Object obj2 = new Object();//initialized
}
谢谢你的澄清。这是我正在寻找的。 – 2013-03-01 19:29:40
@BM欢迎:) – PermGenError 2013-03-01 19:31:16
经过进一步调查,原始类型只有在它们是成员变量时才会初始化为默认值,如果未初始化,局部变量将引发编译错误。
如果您创建一个基元数组,它们将默认初始化(对于本地数组和成员数组都是如此),您需要实例化每个对象的数组。
我不确定这一点。当我在一个方法中声明一个原语时,默认情况下它不会被初始化。如果我尝试在没有初始化的情况下使用它,我会收到一个编译错误。 – 2013-03-01 19:25:53
是的,编译器会吐出“这个变量可能没有被初始化”消息的未初始化本地原语 – 2013-03-01 19:28:57
@JeffHawthorne真的吗?我在前面没有一个java编译器来测试这个,但我认为原型总是会在声明时被赋予默认值,而不管在哪里。 – 2013-03-01 19:30:06
每个类变量,实例变量,或阵列部件被初始化时创建它的默认值(§15.9,§15.10):
对于字节类型,默认值为零,也就是 (字节)0的值。
对于short类型,默认值为零,即(short)的值为0。
对于int类型,默认值是零,即,0
对于类型长,默认值是零,即,0L。
对于浮点类型,默认值为正零,即0.0f。
对于double类型,默认值为正零,即0.0d。
对于char类型,默认值为空字符,即'\ u0000'。
对于布尔类型,默认值为false。
对于所有引用类型(第4.3节),默认值为null
+ +1为真正列出所有原始类型,我太懒了=)。 – 2013-03-01 19:25:38
谢谢,我知道初始化值初始化时是什么。我只是不确定在什么情况下对象被默认初始化。 – 2013-03-01 19:27:50
这应该是被接受的答案。 – 2017-10-09 23:30:05
- 1. Java T初始化
- 2. Java类初始化
- 3. 初始化在JAVA
- 4. 初始化在Java
- 5. Java初始化块
- 6. JAVA初始化块
- 7. 用数组或初始化初始化一个NSMutableArray初始化
- 8. 初始化,初始化与参数和便利初始化
- 9. 初始化在初始化列表
- 10. 直接初始化与值初始化
- 11. 初始化含有初始化列表
- 12. 值初始化vs集合初始化
- 13. C++ - 初始化与骨料初始化
- 14. 初始化内置类型初始化
- 15. 初始化数组时初始化System.AccessViolationException
- 16. Spring初始化bean初始化
- 17. 初始化UITableViewCell初始化问题initwithStyle
- 18. 初始化在Java中
- 19. 初始化在Java中
- 20. 在java中初始化byte []
- 21. 在Java中StringBuilder初始化
- 22. Java的ArrayList的初始化
- 23. std ::数组初始化列表在初始化列表中初始化
- 24. Java的双初始化
- 25. 的Java初始化对象
- 26. 的Java创建初始化
- 27. 默认初始化与默认构建值的初始化初始化
- 28. java.lang.OutOfMemoryError:初始化数组时初始化Java堆空间
- 29. MotionEvent初始化?
- 30. 初始化ISkypeClientPtr
你尝试一下,看看会发生什么? – 2013-03-01 19:22:30
是的,我尝试了其他物体,这似乎是发生,这就是为什么我问这个问题 – 2013-03-01 19:24:35