3

System.out.println(arr) を使用して文字の 1 次元配列を出力していますが、配列内の文字を取得しています (スペースで区切られていません)。「/t」を追加して同じことを行うと、出力が変更され、char 配列のアドレスが出力されるようになりました。

System.out.println(arr) を使用して int の 1 次元配列を出力しようとしましたが、結果が異なり、メモリ内の配列の場所が出力されました。

何が起こっているのか、どのように実装されているのか教えてください。

import java.io.*;
import java.math.*;
import java.util.*;
import java.lang.*;

class Main3{ 

    public static void main(String[] args)throws java.lang.Exception{
        int[] intArr = {1,2,3,4};
        char[] charArr = {'a' , 'b' };
        System. out.println(intArr);             // prints the address of the intArr
        System. out.println(charArr);            // prints the charArr contents 
        System.out.println("\t" + charArr);      // prints the address of the charArr after a tab
    }
}
4

3 に答える 3

2

PrintStreamには、を受け入れるメソッドchar[]があります。

ただし、 Java を実行すると、 String concatenation"\t" + charArrayを実行しようとします。これを行うには、最初にObject#toStringメソッド ( JLS 5.1.11 )を使用して文字列に変換する必要があります。次に、文字列を に渡します。charArrayprintln

于 2013-10-22T19:37:43.180 に答える
-1

配列の要素にアクセスする方法は、ブラケット表記です。たとえば、intArr のインデックス 0 で int を取得する場合は、次のように記述できます。

System.out.println(intArr[0]);

括弧内の数字は、必要な要素のインデックスです。または、それらすべてを反復処理することもできます

for(int i = 0; i < intArr.length; i++){
    System.out.println(intArr[i]);
}

これは、配列内の whats がオブジェクトでない限り機能します - その場合、アドレスが出力されます。

于 2013-10-22T19:51:14.453 に答える