2011-03-22 80 views
42

考虑名为x的Java字段。 当为类x创建一个对象时,x的初始值是什么;什么是Java字符串的默认初始值?

我知道,对于int变量,默认值分配为0,因为正在创建实例。但是String会变成什么?

+0

看一看商务部http://download.oracle.com/javase/tutorial/java/data/strings.html – 2011-03-22 09:42:34

回答

88

如果你什么也不做,它就被初始化为null,就像所有的引用类型一样。

+3

为什么没有分配空字符串“”? Integer是否也为空? – Selvin 2011-03-22 09:40:54

+29

@selvin:是的,'Integer'也是'null'。正如答案所说:**所有**引用类型都将是'null'。然而'int'是一个原始类型,因此不是一个引用类型,它将是'0'。 – 2011-03-22 09:42:10

6

任何对象如果被初始化,它的抵赖值为空,直到除非我们明确提供默认值。

22

这取决于。它只是一个变量(在方法中)?还是班级成员?

如果它只是一个变量,您会在尝试读取它时没有设置任何值,但未先给它赋值。

如果它是一个类成员,它将被VM初始化为null。

10

答案是 - 这取决于。

变量是一个实例变量/类变量吗?有关更多详细信息,请参阅this

默认值列表可以找到here

+3

你的网址已过时。 [这是正确的网址](http://docs.oracle.com/javase/specs/jls/se5.0/html/typesValues.html#4.12.5)。 – vault 2013-03-06 15:01:51

+0

链接带我到一个通用的Java页面。 – 2013-04-16 03:36:07

+0

链接带到java通用页面....更好地编辑答案直接作为答案,因为它是一个简单的..或更新链接.... – pinkpanther 2013-06-10 16:22:41

6

有三种类型的变量:

  • 实例变量:总是被初始化
  • 静态变量:总是被初始化
  • 局部变量:必须使用
  • 之前被初始化

例如静态变量是相同的,取决于类型的默认值:

  • 对象类型(字符串,整数,布尔等):与
  • 原始类型初始化:
    • 字节,短,整型,长:0
    • 浮点,双精度:0.0
    • 布尔:假
    • 炭: '\ u0000的'

数组是一个对象。因此,声明但未明确初始化的数组实例变量将具有值null值。如果将一个int []数组声明为实例变量,它将具有空值。

一旦数组被创建,它的所有元素都被默认的类型值赋值。例如:

private boolean[] list; // default value is null 

private Boolean[] list; // default value is null 

一旦被初始化:

private boolean[] list = new boolean[10]; // all ten elements are assigned to false 

private Boolean[] list = new Boolean[10]; // all ten elements are assigned to null (default Object/Boolean value)