3

私はJavaが初めてで、プログラムが機能せず、ゴミが含まれているため、配列の初期化を使用してプログラムに衝撃を受けました。これは私がやっていることです:

char[] expArray = new char[expEv.length];   //expEv.length is int - expEv is another array
//I have tried all following but not working

expArray = {'\0'};     // error i get: Array constants can only be used in initializers
expArray = {'',};
expArray = {'\0'};

System.out.println("array value: " + expArray); // prints " array value: [C@1cd761a " 

編集:私も使用しようとしましchar[] expArray = new char[expEv.length] {'\0'};たが、これは機能しません

これを手伝って、コンテキストの配列の初期化について説明してください。

4

2 に答える 2

3

これらの人々があなたに与えている提案は正しくありません。なぜなら、あなたはまだ可変サイズの配列を作成したいに違いないからです。実際、あなたが現在していることは100%問題ありません。

Java は、明示的に設定されていない変数を自動的に初期化します。あなたの場合、配列の各値は null 文字に初期化されます。各変数の型が初期化されるものは次のとおりです

そのように印刷するときに意味不明になる唯一の理由は、Java の組み込みtoString()が期待どおりに機能しないためです。ビルトインtoString()が実際に返すものは次のとおりです。

getClass().getName() + '@' + Integer.toHexString(hashCode()) 

配列の値を本当に出力したい場合は、次のようにする必要があります。

System.out.println(Arrays.toString(expArray ));
于 2013-10-06T07:21:19.797 に答える
-1

申し訳ありませんが、Java ではそれができません。ただし、これは十分に近い場合があります。

char[] expArray = {'\0'};
expArray = java.util.Arrays.copyOf(expArray, expEv.length);

ただし、配列を で初期化する場合'\0'、配列の作成自体がすべての要素をゼロにクリアするため、これはまったく不要です。

于 2013-10-06T07:22:18.987 に答える