什么是Java String的默认初始值?

时间:2011-03-22 09:36:27

标签: java string

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

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

5 个答案:

答案 0 :(得分:98)

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

答案 1 :(得分:23)

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

如果它只是一个变量,你会得到一个错误,在尝试从中读取时没有设置任何值而没有先给它一个值。

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

答案 2 :(得分:10)

答案是 - 这取决于。

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

可以找到默认值列表here

答案 3 :(得分:7)

有三种类型的变量:

  • 实例变量:始终初始化
  • 静态变量:始终初始化
  • 本地变量:必须在使用前初始化

实例静态变量的默认值相同,具体取决于类型:

  • 对象类型(String,Integer,Boolean等):使用 null
  • 初始化
  • 原始类型:
    • byte,short,int,long:0
    • float,double:0.0
    • 布尔值:false
    • char:'\ 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)

答案 4 :(得分:6)

任何对象,如果它被初始化,其默认值为null,除非我们明确提供默认值。