我们什么时候应该在Java中使用/不使用初始化?

时间:2015-06-09 13:45:58

标签: java initialization

为什么要面对;未在此代码中初始化?当我应该使用或不使用初始化?

import java.util.Random;

public class RandomIntegers
{
    public static void main( String[] args )
    {
        Random randomNumbers = new Random( 3 );
        int face; 

        for( int counter = 1; counter <=20; counter++)
        {

            face = 1 + randomNumbers.nextInt( 6 );

            System.out.printf("%d ", face );

            if( counter % 5 ==0 )
                System.out.println();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

实际上,这是一个有趣的问题。

编译器发现face仅用于for循环。因此,如果输入for循环(在这种情况下将是这样),face将始终在使用它的地方初始化。

如果在循环外使用face,则会出现错误,因为编译器认为循环可能尚未执行(尽管在您的情况下,它始终是)。

答案 1 :(得分:-2)

在声明字段时,并不总是需要分配值。声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或null,具体取决于数据类型。但是,依赖于这样的默认值通常被认为是错误的编程风格 - 您应该始终初始化变量以提高可读性,并避免混淆/错误。

默认情况下,

int初始化为0值。

话虽如此,你必须知道,局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果无法初始化声明它的局部变量,请确保在尝试使用它之前为其赋值。访问未初始化的局部变量将导致编译时错误。

Oracle文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html