为什么要面对;未在此代码中初始化?当我应该使用或不使用初始化?
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();
}
}
}
答案 0 :(得分:1)
实际上,这是一个有趣的问题。
编译器发现face
仅用于for循环。因此,如果输入for循环(在这种情况下将是这样),face
将始终在使用它的地方初始化。
如果在循环外使用face
,则会出现错误,因为编译器认为循环可能尚未执行(尽管在您的情况下,它始终是)。
答案 1 :(得分:-2)
在声明字段时,并不总是需要分配值。声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或null,具体取决于数据类型。但是,依赖于这样的默认值通常被认为是错误的编程风格 - 您应该始终初始化变量以提高可读性,并避免混淆/错误。
默认情况下,int初始化为0值。
话虽如此,你必须知道,局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果无法初始化声明它的局部变量,请确保在尝试使用它之前为其赋值。访问未初始化的局部变量将导致编译时错误。
Oracle文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html