ホームページ > Java > &#&チュートリアル > Java の配列代入構文は宣言の内部と外部でどのように異なりますか?

Java の配列代入構文は宣言の内部と外部でどのように異なりますか?

Barbara Streisand
リリース: 2024-12-30 03:10:13
オリジナル
215 人が閲覧しました

How Does Java's Array Assignment Syntax Differ Inside and Outside of Declarations?

宣言外の配列代入構文

Java の配列初期化構文は、宣言で使用されるか代入で使用されるかによって異なります。

配列を使用した初期化リテラル

配列を宣言する場合、arrayリテラルを使用して要素を初期化できます。

AClass[] array = {object1, object2};
ログイン後にコピー

新しい演算子で初期化

宣言の外では、配列は new 演算子を使用して初期化し、その後に要素数とその後の代入を行うことができます。 :

AClass[] array = new AClass[2];
array[0] = object1;
array[1] = object2;
ログイン後にコピー

構文の制限: 宣言されていないものへの配列リテラルの代入配列

ただし、宣言されていない配列変数に配列リテラルを割り当てようとすることは禁止されています。

AClass[] array;
...
array = {object1, object2}; // Blocked by Java
ログイン後にコピー

この制限は、すぐには明らかではない理由で Java によって課されています。

回避策: 配列リテラルで新しい演算子を使用する

回避策として、次のようにします。次の構文を使用できます。

AClass[] array;
...
array = new AClass[]{object1, object2};
ログイン後にコピー

このアプローチでは、Java の構文規則に従いながら、配列の作成と初期化を 1 つのステートメントに結合します。

たとえば、次のように考えます。次のコード スニペット:

public void selectedPointsToMove(cpVect coord) {

    if (tab == null) {
        if (arePointsClose(coord, point1, 10)) {
            cpVect[] tempTab = {point1};
            tab = tempTab;
        } else if (arePointsClose(point2, coord, 10)) {
            cpVect[] tempTab = {point2};
            tab = tempTab;
        } else {
            cpVect[] tempTab = {point1,point2};
            tab = tempTab;
        }
    }
}
ログイン後にコピー

回避策がなければ、コードには追加のステートメントが必要になります。 tempTab をタブに割り当てる前に初期化してください。

以上がJava の配列代入構文は宣言の内部と外部でどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート