Java null是任何东西的实例吗?

Java null是任何东西的实例吗?,java,Java,我下面的代码是编译错误。 本地可用数据可能尚未初始化 String str; my_obj.setValue(str); 并由此修复 String str = null; my_obj.setValue(str); 任何东西的空实例也是这样吗?null和not initialized之间的区别是什么 为什么它是这样工作的 我的班级 class MyClass { String str; } 我已初始化obj而不是obj.str。但是没有这样一个编译错误 MyClass obj =

我下面的代码是编译错误。 本地可用数据可能尚未初始化

String str;
my_obj.setValue(str);
并由此修复

String str = null;
my_obj.setValue(str);
任何东西的空实例也是这样吗?null和not initialized之间的区别是什么

为什么它是这样工作的

我的班级

class MyClass {
    String str;
}
我已初始化obj而不是obj.str。但是没有这样一个编译错误

MyClass obj = new MyClass();
my_obj.setValue(str);

在我发布这些问题之前,我已经阅读了你们所有人的建议。也许它是复制的,但我没有从中得到任何想法

局部变量不获取默认值。它们的初始值是未定义的,没有通过某种方式指定值。在使用局部变量之前,必须对它们进行初始化

当您在类级别(作为成员,即作为字段)和方法级别声明变量时,会有很大的不同

如果在类级别声明字段,它们将根据其类型获得默认值。如果在方法级别或作为块(意味着{}内的任何代码)声明变量,则不会获取任何值并保持未定义状态,直到它们以某种方式获取一些起始值(即分配给它们的一些值)

必须先初始化局部变量,然后才能访问它们。 未初始化表示您尚未为该实例创建对象。指定一个值将创建一个对象来使用它

String str ;
上面的代码表示您刚刚声明了它。但是,在为它赋值或为null之前,不能使用它


可以在

上验证对该问题的引用,我认为该问题是重复的,但您的问题的答案似乎是字符串
str
可能实际上没有任何值,除非您在某个地方初始化它。有关更多信息,请参阅和。也许这将对您有所帮助