Java 変数初期化の 2 つの方法の比較とその長所と短所

最初の初期化方法: (推奨)

String fileRename = null; 

File fileToSave = null; 

このアプローチでは、ループの外側の変数の範囲が制限され、コード ブロック全体で変数を使用できるようになります。初期値 null は、変数の先頭に特定の値がないことを意味します。

このアプローチが優れている理由は次のとおりです。

  • これにより、変数の繰り返し定義が回避され、メモリ領域が節約されます。

  • ループ内で同じ変数名を使用すると、変数の繰り返しの代入によって発生する論理エラーを回避できます。

2 番目の初期化方法: (推奨されません)

List<String> fileUrls = new ArrayList<String>(); 

このメソッドは、変数のスコープをループの内側に制限します。つまり、変数はループ内でのみ使用できます。初期値は ArrayList インスタンスです。これは、変数が最初に空の List に初期化されていることを意味します。

2 番目の初期化メソッドを最初の初期化メソッドに変更する場合は、変数の定義をループの外に移動し、初期値 null を追加する必要があります。次のように変更できます。

List<String> fileUrls = null;

 すべての変数定義をループの外に移動し、null に初期化します。これにより、変数が最初に特定の値を持たないことを明確に表現でき、その後のコード ロジックの処理が容易になります。 2 つの初期化方法の違いは、スコープと初期値です。

コード内のどこかで fileUrls という名前の List<String> 変数を宣言し、 null に初期化する場合、次のことが必要です。後でこの変数を参照するときは、NullPointerException の問題に注意してください。

使用する前に空かどうかを確認する必要がありますfileUrls。条件ステートメント (if ステートメントなど) を使用して、変数が null であるかどうかを確認し、それに応じて処理することができます。

if (fileUrls != null) { 
  // 在这里可以安全地使用 fileUrls 变量 
  // 例如,可以调用 fileUrls 的方法或迭代它的元素 // 示例:遍历并输出每个文件URL 
    for (String url : fileUrls) { 
        System.out.println(url); 
    } 
    } else { 
     // 如果 fileUrls 为 null,可以根据需求做出相应的处理 // 示例:打印出提示信息         
     System.out.println("fileUrls 是 null");
}

上記のコードでは、まず fileUrlsnull であるかどうかを確認し、null でない場合は、対応するアクションを実行します。それ以外の場合は代替を実行します。

コードの堅牢性と信頼性を高めるために、null の可能性がある変数は使用前に null かどうかをチェックする必要があることに注意してください。

        もちろん、 List<String> から null 型の変数を初期化する以外にも、変数を初期化する方法はたくさんあります。以下に、いくつかの一般的な初期化方法を示します。

  1. 空のリストで初期化します。

    CodeList<String> fileUrls = new ArrayList<>();
  2. リストの作成時に初期化する要素を追加します。

    CodeList<String> fileUrls = Arrays.asList("url1", "url2", "url3");
  3. 静的初期化ブロックを使用して初期化します。

    CodeList<String> fileUrls;
    {
        fileUrls = new ArrayList<>();
        fileUrls.add("url1");
        fileUrls.add("url2");
        fileUrls.add("url3");
    }

  4. Java 8 の Stream API を使用した初期化:

    CodeList<String> fileUrls = Stream.of("url1", "url2", "url3")
                                   .collect(Collectors.toList());
  5. 二重中括弧の初期化を使用します。

    CodeList<String> fileUrls = new ArrayList<String>() {
         
         {
        add("url1");
        add("url2");
        add("url3");
    }};

補充:

変数の割り当て
変数の初期化とは、変数に明確な初期値を割り当てることを意味します。変数の初期化には2つの方法があり、1つは宣言時に直接値を代入する方法、もう1つは最初に宣言してから値を代入する方法です。次のコードは、2 つの方法で変数を初期化します。

char usersex='女'; // 直接赋值

または

String username; // 先声明
username ="琪琪"; // 后赋值

さらに、同じ型の複数の変数を同時に定義または初期化できますが、複数の変数は宣言の最後でカンマとセミコロンで区切る必要があります。

String username,address,phone,tel; // 声明多个变量
int num1=12,num2=23,result=35; // 声明并初始化多个变量

Java で変数を初期化するときは、次の点に注意する必要があります。

変数はクラスまたは構造体のフィールドです。明示的に初期化されていない場合、変数はデフォルトで作成され、デフォルトの初期値は 0 になります。
メソッド内の変数は明示的に初期化する必要があります。そうしないと、変数の使用時にエラーが発生します。

実際、変数の初期化方法に関して、Java では変数の初期化方法が 4 つ用意されています。

        Java のすべての変数にはデフォルト値があります。このデフォルト値は、変数名や特定の値ではなく、変数のタイプによって異なります。変数に初期値が割り当てられていない場合、システムは自動的に対応する型のデフォルト値に初期化します。

変数をデフォルト値で初期化する

        Javaの基本データ型のうち、数値型のデフォルト値は0、ブール型のデフォルト値はfalse、参照データ型のデフォルト値はnullです。例えば:

int num;
boolean flag;
String str; 

System.out.println(num); //输出0
System.out.println(flag); //输出false
System.out.println(str); //输出null 

変数を初期化するための直接代入

直接代入とは、変数作成時に特定の値を変数に直接代入する方法で、最も一般的な方法です。例えば:

​​​​​​​int num = 10;
String str = "hello";
double pi = 3.1415926;

この方法は最も一般的で理解しやすいもので、変数に必要な値を直接代入するだけです。

コンストラクター経由で変数を初期化する

        コンストラクターを介して変数を初期化する方法は、このメソッドがクラスのコンストラクターを介して変数を初期化する点を除いて、直接代入と似ています。例えば:

public class Person {    
    private String name;    
    private int age;
}


public Person() {        
    name = "张三";        
    age = 18;    
   }
} 

このコード例では、Person クラスのコンストラクターが 2 つの変数、name と age を初期化します。これらの変数は、Person クラス オブジェクトの作成時にデフォルト値に初期化されます。

静的ブロックを使用して変数を初期化する

Java には、静的ブロックを使用して変数を初期化する方法も用意されており、静的ブロックはクラスのロード時に実行され、コンストラクター メソッドの実行よりも優先されます。静的ブロックは 1 回だけ実行され、クラスが複数回ロードされる場合、静的ブロックは 1 回だけ実行されます。例えば:

public class Person { 
  private static String nation;
}

static{        
    nation = "China";    
 }
} 

上記のコードでは、クラス Person の静的ブロックが変数nation を初期化します。この変数は、クラスがロードされるときに「China」に初期化されます。

        変数の初期化には次の 4 つの方法があり、どの方法を使用するかは状況によって異なります。デフォルト値の初期化は最も基本的な方法ですが、すべての状況に適しているわけではありません。コンストラクターを介した直接代入と変数の初期化は最も一般的な方法であり、使用も比較的簡単です。静的ブロックを使用した変数の初期化は、変数を静的環境で初期化する必要がある状況に適しています。

おすすめ

転載: blog.csdn.net/weixin_49171365/article/details/134324480