当前位置: 首页 > 面试题库 >

未初始化的对象vs初始化为NULL的对象

淳于鹏
2023-03-14
问题内容

我在用Java工作。

我通常会这样设置一些对象:

public class Foo {
    private SomeObject someName;

    // do stuff

    public void someMethod() {
        if (this.someName != null) {
            // do some stuff
        }
    }
}

问题是:someName在此示例中是否等于null,按原样我可以reliably for all objects假定对未初始化的对象进行空检查将是准确的?


问题答案:

正确,未显式初始化的引用类型的静态成员和实例成员null都由Java 设置为。相同的规则适用于数组成员。

根据Java语言规范的第4.12.5节:

变量的初始值

程序中的每个变量在使用值之前都必须具有一个值:

每个类变量,实例变量或数组组件在创建时均使用默认值初始化

[…]对于所有引用类型,默认值为null

请注意,以上规则不包括局部变量:必须显式初始化它们,否则程序将无法编译。



 类似资料:
  • 前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加

  • 问题内容: 我想问一下Java初始化的格式。 我目前所知道的是: 等等 现在,在main类中,我想初始化一个,我不知道该怎么做? 问题答案: 首先,文件是对象类型,与int和double不同,它们是原始类型。我不确定您对Java有多熟悉,但是要创建一个对象,请使用该对象的构造函数。 File具有一个构造函数,该构造函数接收该文件在计算机上的位置字符串。

  • 我在使用Mockito进行单元测试初始化对象时遇到了一些困难 这是我的测试代码 要测试的代码 RecTangleService、CircleService和SquareService用注释我尝试了很多选项,最终得出结论。我没有得到我错在哪里。我试着在网上搜索了很多地方,但找不到任何帮助。

  • 我正在使用tomee服务器运行我的javaEE应用程序。我写了一个过滤器,它注入一个对象。但是,该对象似乎没有被实例化: 以下是我的代码: Filter.java Faculty.java 我得到了一个NPE。以下是堆栈跟踪: 下面是正在使用的工件的版本: 我已经尝试在META-INF和WEB-INF中包含beans.xml,但我仍然看到NPE.Can有人让我知道我做错了什么?

  • 有许多方法可以使用mockito初始化模拟对象。其中什么是最好的方法? 1. 建议我有没有比这些更好的方法...