首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的默认值和初始化

Java中的默认值和初始化
EN

Stack Overflow用户
提问于 2013-10-02 14:46:29
回答 6查看 168.6K关注 0票数 86

基于my reference,基元类型具有默认值,而对象为空。我测试了一段代码。

代码语言:javascript
复制
public class Main {
    public static void main(String[] args) {
        int a;
        System.out.println(a);
    }
}

System.out.println(a);将是一个错误,指向变量a,表示为variable a might not have been initialized,而在给定的引用中,integer0作为默认值。但是,使用下面的给定代码,它实际上将打印0

代码语言:javascript
复制
public class Main {
    static int a;
    public static void main(String[] args) {
        System.out.println(a);
    }
}

第一个代码可能会出什么问题?类变量的行为是否与局部变量不同?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-10-02 14:48:14

在第一个代码示例中,a是一个main方法局部变量。方法局部变量需要在使用前进行初始化。

在第二个代码示例中,a是类成员变量,因此它将被初始化为默认值。

票数 85
EN

Stack Overflow用户

发布于 2013-10-02 14:47:58

可以,实例变量将被初始化为默认值。对于局部变量,您需要在使用前进行初始化:

代码语言:javascript
复制
public class Main {

    int instaceVariable; // An instance variable will be initialized to the default value

    public static void main(String[] args) {
        int localVariable = 0; // A local variable needs to be initialized before use
    }
}
票数 3
EN

Stack Overflow用户

发布于 2017-07-05 13:41:37

局部变量不会获得默认值。如果不通过某种方式赋值,它们的初始值是未定义的。在使用局部变量之前,必须先对其进行初始化。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19131336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档