java - 不初始化局部变量并将属性(整数)初始化为 0 背后的逻辑是什么?

标签 java class properties initialization local-variables

这可能是一个愚蠢的问题吗?抱歉,听起来是这样。我有以下代码。

条件1

public class Test {

    int a;

    void display() {
        System.out.println(a);
    }
}

条件2

public class Test {

    void display() {
        int a;
        System.out.println(a);
    }
}

第二个条件我很清楚。 a未初始化。所以,这会产生一个错误。但在第一个条件下,我还没有初始化属性 a 。运行以下代码时,不会产生错误。相反,它会显示 0。这可能是由于 integer初始化为0。

Test t;
t = new Test();
t.display();

不初始化局部变量并将属性(整数)初始化为0背后的逻辑是什么?

最佳答案

请参阅 Java 语言规范第 4.12.5 节:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.5

“每个类变量、实例变量或数组组件在创建时都会使用默认值进行初始化。

“局部变量在使用之前必须通过初始化或赋值以可以使用明确赋值规则进行验证的方式显式赋予值。”

关于java - 不初始化局部变量并将属性(整数)初始化为 0 背后的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23423852/

相关文章:

android - 在由其他对象组成的类中实现 Parcelable 接口(interface)

C++ 扑克牌类

c++ - 指针深拷贝的 vector

properties - 确保数组属性的每个元素都符合 React 中的自定义形状

c# - 创建属性 setter 委托(delegate)

javascript - 通过字符串 var 获取自定义对象属性

java - 如何从jar中读取外部xml文件

java - 应用程序在果冻 bean 上崩溃

java - 安卓自定义按钮

java - ArrayList trimtosize 不工作 android