検索

ホームページ  >  に質問  >  本文

赋值 - Java数组初始化,这三种方式有什么区别?

形式1:

Object[] params = null;
params = {1, 2, 3, 4};

形式2:

Object[] params = {1, 2, 3, 4};

形式3:

Object[] params = new Object[]{1, 2, 3, 4};

1.为什么第一种形式就是错的(编译阶段就报错),而第二种就可以呢?(第三种很显然)
2.第二种和第三种,哪种初始化方式更优呢?(或者有更好的?)

天蓬老师天蓬老师2769日前939

全員に返信(4)返信します

  • 迷茫

    迷茫2017-04-18 09:51:39

    まず、配列の初期化を使用するときに配列の長さを決定する必要があります。これは、配列の長さが不変であることを意味します。
    JAVA で配列を作成するには 2 つの方法があります:
    (1) などの 静的作成

    リーリー

    (2)1
    などの

    の動的作成 リーリー

    2

    リーリー

    3

    リーリー

    そして質問者が言及した方法:

    リーリー

    エラー 1: 空の配列 params を直接作成しています。つまり、空であり、この時点で配列の長さを変更することはできません。当然、空の配列には何も追加できません。何かがうまくいかないでしょう。上で説明した 2 番目の方法と同じことを行い、長さ 4 の配列を再作成し、新しい配列のアドレスを params に指定する必要があります。つまり、Object[] params = null; 4]; この方法で作成できます。
    エラー 2: 配列の初期化は、定義が完了した後にのみ連続して追加できます。

    リーリー

    その後、データを追加したい場合は、配列の添え字に従って 1 つずつ追加するだけです。

    リーリー

    ただし、直接ではありません params = {1, 2, 3, 4};

    返事
    0
  • 迷茫

    迷茫2017-04-18 09:51:39

    フォーム 1

    リーリー

    この宣言メソッドは、実際には Java 初期化配列の 構文シュガー です。いわゆる構文シュガーは、実際の実行では、Java によってフォーム 3 に変換されます。 、

    リーリー

    Java はフォーム 2 のような糖衣構文を提供していないため、この方法で使用することは違法です。

    返事
    0
  • 迷茫

    迷茫2017-04-18 09:51:39

    リーリー

    A. 投稿者はあまり心配する必要がない構文が規定されています。
    B. 配列の要素が事前にわかっている場合は、Object[] params = {1, 2, 3, 4}; を使用して配列コードを宣言する方が簡潔です。それ以上の言い方はありません。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:51:39

    最初の宣言方法は間違っています
    Object[] params = new Object[length] である必要があります

    2枚目は私が普段使っているものです

    返事
    0
  • キャンセル返事