3

出力は何を意味しますか...「intarray」を出力すると、ハッシュコードが得られます...「floatarray」でも同じですが、「chararray」を出力すると何も得られません次のデータはどういう意味ですか?? ???

class Test
{
    public static void main(String []aeg)
    {
        int []intarray = new int[5];
        char []chararray = new char[5];
        float []floatarray = new float[5];
        System.out.println(intarray);
        System.out.println(chararray);
        System.out.println(floatarray);
    }
 }

ここから出力開始

コンソールで印刷した後、次の出力が得られます....

      F:\Mehnat\my sc\By me\ArrayList\2\2>javac Test.java
      F:\Mehnat\my sc\By me\ArrayList\2\2>java Test
      [I@546da8eb

      [F@6b6d079a

ここで出力終了

4

4 に答える 4

7

文字の配列を印刷すると、配列の内容が文字列として (一度に 1 文字ずつ) 印刷されます。あなたの新しい配列は、印刷されていないヌル文字で満たされています。何かを入力して、もう一度確認してください。

chararray[0] = 'H';
chararray[1] = 'e';
chararray[2] = 'l';
chararray[3] = 'l';
chararray[4] = 'o';
System.out.println(chararray);

印刷する必要がありますHello

于 2013-08-07T05:17:20.323 に答える
5

PrintStream.printlnを受け取るオーバーロードがあるため、この動作が見られますchar[]。そのメソッドのドキュメントから:

文字の配列を出力して、行を終了します。

もちろん、配列の要素は初期化されていないため、すべてデフォルトcharの 、'\u0000'つまり null 文字です。配列に表示可能な文字を入力すると、結果が表示されます。

char[] charArray = new char[] {'a', 'b', 'c', 'd', 'e'};
System.out.println(charArray); //prints "abcde"

他のメソッド呼び出しは usingprintln(Object)であり、オブジェクトの の結果を出力しますtoString。配列は をオーバーライドしないtoStringため、デフォルトのObject.toString実装の結果が表示されます。

classのtoStringメソッドObjectは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字 `@'、およびオブジェクトのハッシュ コードの符号なし 16 進数表現で構成される文字列を返します。つまり、このメソッドは次の値に等しい文字列を返します。

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

回避策として、Arraysユーティリティ クラスは、配列の表現toStringを取得するためのヘルパー メソッドを提供します。String例えば:

int[] intArray = new int[] {1, 2, 3, 4, 5};
char[] charArray = new char[] {'a', 'b', 'c', 'e', 'f'};
float[] floatArray = new float[] {1.0F, 1.1F, 1.2F, 1.3F, 1.4F};
System.out.println(Arrays.toString(intArray));   // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(charArray));  // [a, b, c, e, f]
System.out.println(Arrays.toString(floatArray)); // [1.0, 1.1, 1.2, 1.3, 1.4]
于 2013-08-07T05:19:21.327 に答える
0

これは、配列には他の各要素へのメモリ アドレスしか含まれていないためです。これは「ポインター」と呼ばれるもので、おそらく将来完全に挫折することになるプログラミングの概念です。ただし、文字列は実際には単なる char 配列であるため、char[] 配列の出力は文字列としてオーバーロードされます。

于 2013-08-07T05:55:02.757 に答える
0

16 ビット Unicode で表される文字 '\u0000' から '\uFFFF'。算術演算では[0~65535]の範囲の16ビット符号なし整数として扱える

        int []intarray = new int[5];

デフォルト値は 0 です。

            char []chararray = new char[5];

新しい配列は、印刷されないヌル文字で埋められます

          float []floatarray = new float[5];




    Ex:


 class Whatever {
 public static void main(String args[]) {
 char[] hello = { 'h', 'e', 'l', 'l', 'o', '.'};
 String hello_str = new String(hello);
 System.out.println(hello + " " + hello_str);
 }
 }
于 2013-08-07T05:28:16.483 に答える