簡體   English   中英

我們什么時候應該在 Java 中使用/不使用初始化?

[英]When should we use / not use initialization in Java?

為什么是int face; 未在此代碼中初始化? 什么時候應該使用或不使用初始化?

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();
        }
    }
}

實際上,這是一個有趣的問題。

編譯器看到該face僅在 for 循環中使用。 因此,如果進入 for 循環(在這種情況下就是這樣), face將始終在使用它的地方進行初始化。

如果你在循環外使用face你會得到一個錯誤,因為編譯器認為循環可能沒有被執行(盡管在你的情況下,它總是如此)。

聲明字段時並不總是需要賦值。 已聲明但未初始化的字段將由編譯器設置為合理的默認值。 一般而言,此默認值將為零或空值,具體取決於數據類型。 然而,依賴這樣的默認值通常被認為是不好的編程風格——你應該始終初始化變量以提高可讀性,並避免混淆/錯誤。

int 默認初始化為 0 值。

話雖如此,您必須知道,局部變量略有不同; 編譯器永遠不會為未初始化的局部變量分配默認值。 如果您無法在聲明它的地方初始化您的局部變量,請確保在嘗試使用它之前為其分配一個值。 訪問未初始化的局部變量將導致編譯時錯誤。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM