我们什么时候应该使用/不使用 Java 中的初始化?
When should we use / not use initialization in Java?
为什么是int脸;没有在这段代码中初始化?什么时候应该使用或不使用初始化?
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();
}
}
}
声明字段时并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或空值,具体取决于数据类型。然而,依赖这样的默认值通常被认为是糟糕的编程风格——您应该始终初始化变量以提高可读性,并避免 confusion/mistakes.
int 默认初始化为 0。
话虽如此,您必须知道,局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果您不能在声明局部变量的地方对其进行初始化,请确保在尝试使用它之前为其分配一个值。访问未初始化的局部变量将导致编译时错误。
Oracle 文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
其实这个问题很有意思
编译器看到face
只用在for循环中。因此,如果进入 for 循环(在本例中就是这样),face
将始终在使用它的地方进行初始化。
如果您在循环外使用 face
,您会得到一个错误,因为编译器认为循环可能没有被执行(尽管在您的情况下,它总是如此)。
为什么是int脸;没有在这段代码中初始化?什么时候应该使用或不使用初始化?
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();
}
}
}
声明字段时并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或空值,具体取决于数据类型。然而,依赖这样的默认值通常被认为是糟糕的编程风格——您应该始终初始化变量以提高可读性,并避免 confusion/mistakes.
int 默认初始化为 0。
话虽如此,您必须知道,局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果您不能在声明局部变量的地方对其进行初始化,请确保在尝试使用它之前为其分配一个值。访问未初始化的局部变量将导致编译时错误。
Oracle 文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
其实这个问题很有意思
编译器看到face
只用在for循环中。因此,如果进入 for 循环(在本例中就是这样),face
将始终在使用它的地方进行初始化。
如果您在循环外使用 face
,您会得到一个错误,因为编译器认为循环可能没有被执行(尽管在您的情况下,它总是如此)。