Java配列を出力する最も簡単な方法は何ですか?


1946

Javaでは、配列はをオーバーライドしないtoString()ため、配列を直接出力しようとすると、classNamehashCode、次のように定義されているように、配列 + '@' + hexが得られObject.toString()ます。

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

しかし、通常、実際にはのようなものが必要です[1, 2, 3, 4, 5]。それを行う最も簡単な方法は何ですか?入力と出力の例をいくつか示します。

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]

8
文字列以外のオブジェクトをどのように表現しますか?toStringを呼び出した結果?引用符で囲んでいるかどうか。
Jon Skeet、

3
はい、オブジェクトはtoString()メソッドで表され、引用符なしで表示されます(出力例を編集しただけです)。
Alex Spurling


1
その奇妙な出力は必ずしもメモリの場所ではありません。これhashCode()は16進数です。を参照してくださいObject#toString()
4castle 2016年

1
java8チェックに1次元または多次元配列印刷するstackoverflow.com/questions/409784/...
akhil_mittal

回答:


2604

Java 5以降では、配列内の配列にArrays.toString(arr)またはArrays.deepToString(arr)を使用できます。Object[]バージョンは.toString()配列内の各オブジェクトを呼び出すことに注意してください。出力は、要求どおりの方法で装飾されています。

例:

  • 単純な配列:

    String[] array = new String[] {"John", "Mary", "Bob"};
    System.out.println(Arrays.toString(array));

    出力:

    [John, Mary, Bob]
  • ネストされた配列:

    String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
    System.out.println(Arrays.toString(deepArray));
    //output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
    System.out.println(Arrays.deepToString(deepArray));

    出力:

    [[John, Mary], [Alice, Bob]]
  • double アレイ:

    double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
    System.out.println(Arrays.toString(doubleArray));

    出力:

    [7.0, 9.0, 5.0, 1.0, 3.0 ]
  • int アレイ:

    int[] intArray = { 7, 9, 5, 1, 3 };
    System.out.println(Arrays.toString(intArray));

    出力:

    [7, 9, 5, 1, 3 ]

3
文字列の配列があり、単純な出力が必要な場合はどうでしょうか。のように:とString[] array = {"John", "Mahta", "Sara"}、ブラケットとコンマなしでこの出力が必要John Mahta Saraです:?
ヘンガメ2015

3
@ヘンゲーム:これを行う方法は他にもいくつかありますが、私のお気に入りは次の方法です:javahotchocolate.com/notes/java.html#arrays-tostring
ラスベイトマン2015

5
FYI、Arrays.deepToString()のみ受け付けるObject [](または拡張クラスの配列Objectのような、Integerそれが型のプリミティブ配列で作業しないように、int []しかし。Arrays.toString(<int array>)プリミティブ配列に対して罰金を動作します。
マーカス

4
@Hengameh専用のメソッドがあります。System.out.println(String.join(" ", new String[]{"John", "Mahta", "Sara"}))印刷されますJohn Mahta Sara
user8397947 2017年

2
@dorukayhan実際には、ここで配列を明示的にインスタンス化することを省略できます。String.join(" ", "John", "Mahta", "Sara")この.join(...)メソッドは配列をvarargパラメータとして受け取ります。
アマダン

354

常に最初に標準ライブラリを確認してください。

import java.util.Arrays;

次に試してください:

System.out.println(Arrays.toString(array));

または、配列に要素として他の配列が含まれている場合:

System.out.println(Arrays.deepToString(array));

文字列の配列があり、単純な出力が必要な場合はどうでしょうか。のように:とString[] array = {"John", "Mahta", "Sara"}、ブラケットとコンマなしでこの出力が必要John Mahta Saraです:?
ヘンガメ2015

1
@Hengameh Arrays.toString(array)を文字列変数に格納し、Javaのreplaceメソッドで中括弧を削除するだけ
Naveed Ahmad

12
Javaの8と今日で@Hengameh: String.join(" ", Arrays.asList(array))doc
ジャスティン

106

ただし、これは知っておくと便利です。「常に最初に標準ライブラリを確認してください」の場合、私は以下のトリックに遭遇したことはありません。 Arrays.toString( myarray )

-これを行う方法を確認するためにmyarrayのタイプに集中していたためです。繰り返し処理する必要はありませんでした。Eclipseデバッガーに表示されるものと同じように簡単に呼び出せるようにしたかったのですが、myarray.toString()は実行していませんでした。

import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );

文字列の配列があり、単純な出力が必要な場合はどうでしょうか。のように:とString[] array = {"John", "Mahta", "Sara"}、ブラケットとコンマなしでこの出力が必要John Mahta Saraです:?
ヘンガメ2015

3
@ヘンガメそれは別のトピックだと思います。後で一般的な文字列操作でこの文字列を操作できます... Arrays.toString(myarray).replace( "["、 "(");などのように
OddDev

91

JDK1.8では、集計演算とラムダ式を使用できます。

String[] strArray = new String[] {"John", "Mary", "Bob"};

// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

// #2
Stream.of(strArray).forEach(System.out::println);

// #3
Arrays.stream(strArray).forEach(System.out::println);

/* output:
John
Mary
Bob
*/

50
以下面倒、Arrays.stream(strArray).forEach(System.out::println);
アレクシスC.

9
これは不器用です。これSystem.out::printlnは、Java 8メソッドリファレンスである必要があります。コードは不要なラムダを生成します。
Boris the Spider

2
スキップしArrays.asListて実行Arrays.stream(strArray).forEach(System.out::println)
Justin

1
@AlexisC。配列以外のオブジェクトでも使用できるためです。
Yassin Hajaj

1
@YassinHajaj両方。たとえば、配列に範囲ストリームを設定したい場合は、慣用的な方法を使用Stream.ofします.skip(n).limit(m)。現在の実装ではSIZEDストリームは返されませんArrays.stream(T[], int, int)が、並列で操作を実行する場合は、分割パフォーマンスが向上します。また、をint[]使用しStream.ofている場合、誤ってを使用するStream<int[]>と、が1つの要素でArrays.stream返され、IntStream直接が返されます。
Alexis

41

Java 8以降ではjoin()文字列クラスが提供するメソッドを利用して、大括弧なしで配列要素を出力し、選択した区切り文字(以下の例ではスペース文字)で区切ることもできます。

String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting) 

出力は「Hey there amigo!」になります。


40

Java 1.4を使用している場合は、代わりに次のことができます。

System.out.println(Arrays.asList(array));

(もちろんこれは1.5+でも機能します。)


38
残念ながら、これはオブジェクトの配列でのみ機能し、プリミティブの配列では機能しません。
Alex Spurling

34

Arrays.toString

直接的な答えとして、@Eskoを含むいくつかの人Arrays.toStringArrays.deepToStringメソッドを使用して提供するソリューションは、単に最高です。

Java 8-Stream.collect(joining())、Stream.forEach

以下に、提案された他のいくつかの方法をリストし、少し改善しようとします。最も注目すべき追加は、Stream.collect演算子の使用、を使用して、が何をしているかを模倣することです。joining CollectorString.join

int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(IntStream.of(ints).boxed().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(ints));

String[] strs = new String[] {"John", "Mary", "Bob"};
System.out.println(Stream.of(strs).collect(Collectors.joining(", ")));
System.out.println(String.join(", ", strs));
System.out.println(Arrays.toString(strs));

DayOfWeek [] days = { FRIDAY, MONDAY, TUESDAY };
System.out.println(Stream.of(days).map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(days));

// These options are not the same as each item is printed on a new line:
IntStream.of(ints).forEach(System.out::println);
Stream.of(strs).forEach(System.out::println);
Stream.of(days).forEach(System.out::println);

33

Java 8より前

Arrays.toString(array)1次元配列および多次元配列を出力するArrays.deepToString(array)ために使用できたはずです。

Java 8

今、私たちはのオプションを持っているStreamlambda、アレイを印刷します。

1次元配列の印刷:

public static void main(String[] args) {
    int[] intArray = new int[] {1, 2, 3, 4, 5};
    String[] strArray = new String[] {"John", "Mary", "Bob"};

    //Prior to Java 8
    System.out.println(Arrays.toString(intArray));
    System.out.println(Arrays.toString(strArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(intArray).forEach(System.out::println);
    Arrays.stream(strArray).forEach(System.out::println);
}

出力は次のとおりです。

[1、2、3、4、5]
[ジョン、メアリー、ボブ]
1
2
3
4
5
ジョン
メアリー
ボブ

印刷多次元配列 、我々は我々が使用することができます多次元配列印刷したい念のArrays.deepToString(array)ように:

public static void main(String[] args) {
    int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
    String[][] str2DArray = new String[][]{ {"John", "Bravo"} , {"Mary", "Lee"}, {"Bob", "Johnson"} };

    //Prior to Java 8
    System.out.println(Arrays.deepToString(int2DArray));
    System.out.println(Arrays.deepToString(str2DArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
    Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
} 

ここで注目すべき点は、Arrays.stream(T[])int[]返された場合にStream<int[]>method flatMapToInt()がストリームの各要素を、提供されたマッピング関数を各要素に適用することによって生成されたマップ済みストリームのコンテンツにマップすることです。

出力は次のとおりです。

[[11、12]、[21、22]、[31、32、33]]
[[ジョン、ブラボー]、[メアリー、リー]、[ボブ、ジョンソン]]
11
12
21
22
31
32
33
ジョン
ブラボー
メアリー
リー
ボブ
ジョンソン


文字列の配列があり、単純な出力が必要な場合はどうでしょうか。のように:とString[] array = {"John", "Mahta", "Sara"}、ブラケットとコンマなしでこの出力が必要John Mahta Saraです:?
ヘンガメ2015

28

Arrays.deepToString(arr) 1行だけで印刷します。

int[][] table = new int[2][2];

実際にテーブルを2次元のテーブルとして印刷するには、次のようにしなければなりません。

System.out.println(Arrays.deepToString(table).replaceAll("],", "]," + System.getProperty("line.separator")));

Arrays.deepToString(arr)メソッドはセパレーター文字列を受け取る必要があるようですが、残念ながら受け取りません。


3
多分System.getProperty( "line.separator");を使用してください。\ r \ nの代わりに、Windows以外にも適切です。
スクーター

System.lineSeparator()を今すぐ使用できます
Novaterata 2017

20
for(int n: someArray) {
    System.out.println(n+" ");
}

6
このようにして、空のスペースができます;)
マティアス

1
@ matthiad ..この行は、スペースが空になることを回避しますSystem.out.println(n +(someArray.length == n)? "": "");
Muhammad Suleman

3
それを行うための最悪の方法。
NameNotFoundException 2015

@MuhammadSulemanこれはfor-eachループであるため、機能しません。nインデックスではなく、配列の実際の値です。通常のforループの場合、も配列の長さと等しくなる(someArray.length - 1) == iと壊れるので、これもになりますi
Radiodef

17

Javaで配列を出力するさまざまな方法:

  1. シンプルな方法

    List<String> list = new ArrayList<String>();
    list.add("One");
    list.add("Two");
    list.add("Three");
    list.add("Four");
    // Print the list in console
    System.out.println(list);

出力:[1、2、3、4]

  1. 使用する toString()

    String[] array = new String[] { "One", "Two", "Three", "Four" };
    System.out.println(Arrays.toString(array));

出力:[1、2、3、4]

  1. 配列の配列の印刷

    String[] arr1 = new String[] { "Fifth", "Sixth" };
    String[] arr2 = new String[] { "Seventh", "Eight" };
    String[][] arrayOfArray = new String[][] { arr1, arr2 };
    System.out.println(arrayOfArray);
    System.out.println(Arrays.toString(arrayOfArray));
    System.out.println(Arrays.deepToString(arrayOfArray));

出力:[[Ljava.lang.String; @ 1ad086a [[Ljava.lang.String; @ 10385c1、[Ljava.lang.String; @ 42719c] [[Fifth、Sixth]、[Seventh、Eighth]]

リソース:配列にアクセスする


13

通常のforループを使用することは、私の考えでは配列を出力する最も簡単な方法です。ここにあなたのintArrayに基づいたサンプルコードがあります

for (int i = 0; i < intArray.length; i++) {
   System.out.print(intArray[i] + ", ");
}

それはあなたの1、2、3、4、5として出力されます


4
出力として「1、2、3、4、5」を出力し、最後の要素の後にカンマも出力します。
icza 2014年

最後の要素の後にカンマがないための解決策は何ですか?
Mona Jalal 14年

3
ループ内のコードを次のように置き換えることができますSystem.out.print(intArray[i]); if(i != intArray.length - 1) System.out.print(", ");
Nepoxx

2
System.out.print(i + (i < intArray.length - 1 ? ", " : ""));これらの2つの行を結合するために使用することもできます。
Nick Suwyn、2016年

StringBuilderを使用して、末尾のコンマを切り捨てることができます。int [] intArray = new int [] {1、2、3、4、5}; final StringBuilder sb = new StringBuilder(); for(int i:intArray){sb.append(intArray [i])。append( "、"); } if(sb.length()> 0){sb.setLength(sb.length()-1); } System.out.println(sb.toString()); 「1、2、3、4、5」が出力されます。
Rick Ryker、2016

8

最近、バニラ#Javaでこの投稿を見つけました。それは非常に便利な書き込みArrays.toString(arr);ではなく、java.util.Arrays;常にインポートします。

これは決して恒久的な修正ではないことに注意してください。デバッグを簡単にするハックだけです。

配列を出力すると、内部表現とハッシュコードが直接提供されます。現在、すべてのクラスはObject親タイプとして持っています。だから、なぜハックしないのObject.toString()ですか?変更しない場合、Objectクラスは次のようになります。

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

これが次のように変更された場合:

public String toString() {
    if (this instanceof boolean[])
        return Arrays.toString((boolean[]) this);
    if (this instanceof byte[])
        return Arrays.toString((byte[]) this);
    if (this instanceof short[])
        return Arrays.toString((short[]) this);
    if (this instanceof char[])
        return Arrays.toString((char[]) this);
    if (this instanceof int[])
        return Arrays.toString((int[]) this);
    if (this instanceof long[])
        return Arrays.toString((long[]) this);
    if (this instanceof float[])
        return Arrays.toString((float[]) this);
    if (this instanceof double[])
        return Arrays.toString((double[]) this);
    if (this instanceof Object[])
        return Arrays.deepToString((Object[]) this);
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

この変更されたクラスは、コマンドラインに次の行を追加することにより、クラスパスに単に追加できます。 -Xbootclasspath/p:target/classes

deepToString(..)Java 5以降で利用toString(..)できるようになったため、を簡単にdeepToString(..)他の配列を含む配列のサポートを追加するます。

これは非常に便利なハックであることがわかりました。Javaがこれを単純に追加できればすばらしいでしょう。文字列表現が問題になる可能性があるため、非常に大きな配列を使用する場合の潜在的な問題を理解しています。たぶん、そのような事態にa System.outやのようなものを渡しますPrintWriter


2
ifすべてのオブジェクトでこれらの条件を実行したいですか?
sidgate

アイデアのためだけに+1しますが、前のコメントに基づいて、Object共通の親に依存するのではなく、配列の実装を直接変更できますか?そのアイデアをさらに活用できますか?java.lang。*オブジェクトのデフォルトの動作を変更することは私が推奨することだとは思いません...
YoYo

8

使用するJDKバージョンは常に機能するはずです。

System.out.println(Arrays.asList(array));

Arrayオブジェクトが含まれている場合に機能します。Arrayにプリミティブ型が含まれている場合は、プリミティブを直接保存する代わりにラッパークラスを使用できます。

例:

int[] a = new int[]{1,2,3,4,5};

それを次のものに置き換えます。

Integer[] a = new Integer[]{1,2,3,4,5};

更新:

はい !これは、配列をオブジェクト配列に変換したり、オブジェクトの配列を使用したりするにはコストがかかり、実行が遅くなる可能性があることを述べておく必要があります。これは、自動ボクシングと呼ばれるJavaの性質によって発生します。

したがって、印刷目的でのみ使用してください。パラメータとして配列を取り、希望するフォーマットを次のように出力する関数を作成できます。

public void printArray(int [] a){
        //write printing code
} 

1
単に印刷目的で配列をリストに変換することは、非常にリソースの多い決定のようには見えません。同じクラスがを持っているとするとtoString(..)、誰かがこれをする理由を私は打ち負かします。
Debosmit Ray 2016

8

Java 8では簡単です。2つのキーワードがあります

  1. ストリーム: Arrays.stream(intArray).forEach
  2. メソッドリファレンス: ::println

    int[] intArray = new int[] {1, 2, 3, 4, 5};
    Arrays.stream(intArray).forEach(System.out::println);

配列のすべての要素を同じ行に出力する場合printは、printlnieの代わりに使用します

int[] intArray = new int[] {1, 2, 3, 4, 5};
Arrays.stream(intArray).forEach(System.out::print);

メソッド参照のない別の方法は次のように使用します:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(intArray));

1
これは、配列の各要素を別々の行に出力するため、要件を満たしません。
Alex Spurling

配列内のすべての要素を同じ行に出力する場合は、printlnの代わりにprintを使用します。つまり、int [] intArray = new int [] {1、2、3、4、5}; Arrays.stream(intArray).forEach(System.out :: print); antotherwayはmethodreferenceなしでint [] intArray = new int [] {1、2、3、4、5}を使用するだけです。System.out.println(Arrays.toString(intArray));
suatCoskun

6

配列のタイプがchar []の場合、もう1つの方法があります。

char A[] = {'a', 'b', 'c'}; 

System.out.println(A); // no other arguments

プリント

abc

5

すべての回答に追加するには、オブジェクトをJSON文字列として印刷することもオプションです。

ジャクソンの使用:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
System.out.println(ow.writeValueAsString(anyArray));

Gsonの使用:

Gson gson = new Gson();
System.out.println(gson.toJson(anyArray));

これが私がすることです。これにより、JSONにコード化できる限り、複雑な構造を任意に印刷できます。私はいつも「きれい」を使うようにしています。あなたの2番目の例はそれをしますか?それを手に入れるには「かなり」のオプションをくすぐる必要があると思います。
スティーブ

5

配列をループして、ループするときに各項目を出力できます。例えば:

String[] items = {"item 1", "item 2", "item 3"};

for(int i = 0; i < items.length; i++) {

    System.out.println(items[i]);

}

出力:

item 1
item 2
item 3

5

配列を印刷するには次の方法があります

 // 1) toString()  
    int[] arrayInt = new int[] {10, 20, 30, 40, 50};  
    System.out.println(Arrays.toString(arrayInt));

// 2 for loop()
    for (int number : arrayInt) {
        System.out.println(number);
    }

// 3 for each()
    for(int x: arrayInt){
         System.out.println(x);
     }

4

私が試した簡単なショートカットはこれです:

    int x[] = {1,2,3};
    String printableText = Arrays.toString(x).replaceAll("[\\[\\]]", "").replaceAll(", ", "\n");
    System.out.println(printableText);

印刷されます

1
2
3

このアプローチではループは不要で、小規模なアレイにのみ最適です


4

for-eachループは、配列の要素を出力するためにも使用できます。

int array[] = {1, 2, 3, 4, 5};
for (int i:array)
    System.out.println(i);

@firephil System.out.println(a [i]); 通常のforループで使用され、インデックス「i」が作成され、すべてのインデックスの値が出力されます。「for each」ループを使用しました。それを試してみて、あなたが私のポイントを得ることを願っています。
hasham.98 2016

はい、これは配列を印刷する最短の方法です
Manjitha teshara 2018

3
public class printer {

    public static void main(String[] args) {
        String a[] = new String[4];
        Scanner sc = new Scanner(System.in);
        System.out.println("enter the data");
        for (int i = 0; i < 4; i++) {
            a[i] = sc.nextLine();
        }
        System.out.println("the entered data is");
        for (String i : a) {
            System.out.println(i);
        }
      }
    }

3

org.apache.commons.lang3.StringUtils.join(*)メソッドを使用することもオプションです
。次に例を示します。

String[] strArray = new String[] { "John", "Mary", "Bob" };
String arrayAsCSV = StringUtils.join(strArray, " , ");
System.out.printf("[%s]", arrayAsCSV);
//output: [John , Mary , Bob]

次の依存関係を使用しました

<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>

2行のコードで行われる些細なことのために依存関係を追加することは、悲鳴を上げるアンチパターンです。
jurez

commons-lang3は非常にポプラの依存関係であり、この回答はほとんどの人がJava 8を使用していなかった
Haim Raman

2

これは、byte []印刷するための複製としてマークされます。注:バイト配列の場合、適切なメソッドが他にもあります。

ISO-8859-1文字が含まれている場合は、文字列として印刷できます。

String s = new String(bytes, StandardChars.ISO_8559);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.ISO_8559);

または、UTF-8文字列が含まれている場合

String s = new String(bytes, StandardChars.UTF_8);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.UTF_8);

または、16進数として印刷したい場合。

String s = DatatypeConverter.printHexBinary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseHexBinary(s);

または、base64として印刷する場合。

String s = DatatypeConverter.printBase64Binary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseBase64Binary(s);

または、符号付きバイト値の配列を出力したい場合

String s = Arrays.toString(bytes);
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = Byte.parseByte(split[i]);

または、符号なしバイト値の配列を出力する場合

String s = Arrays.toString(
               IntStream.range(0, bytes.length).map(i -> bytes[i] & 0xFF).toArray());
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = (byte) Integer.parseInt(split[i]); // might need a range check.

1
// array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};

System.out.println(Arrays.toString(intArray));

output: [1, 2, 3, 4, 5]

// array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};

System.out.println(Arrays.toString(strArray));

output: [John, Mary, Bob]

1

jdk 8を実行している場合。

public static void print(int[] array) {
    StringJoiner joiner = new StringJoiner(",", "[", "]");
    Arrays.stream(array).forEach(element -> joiner.add(element + ""));
    System.out.println(joiner.toString());
}


int[] array = new int[]{7, 3, 5, 1, 3};
print(array);

出力:

[7,3,5,1,3]

これは、区切り文字、プレフィックス、およびサフィックスをより詳細に制御できるという点で、受け入れられた回答よりも優れています。しかし、私はtoString()ファイナルで余分なものを削除し、空の文字列を追加する代わりにSystem.out.println()それを使用しましたjoiner.add(element.toString())。このソリューションは、非プリミティブ型の配列にも均一に機能します。
ジョンマクレイン2018

私の悪いことに、element.toString()内部joiner.add()は非プリミティブ型のみです。あなたはまだ使用する必要がありますInteger.toString(element)-プリミティブ型のような構造。個人的には、for (int element : array) joiner.add(Integer.toString(element));ストリームではなくforeachループを使用しましたが、それは好みの問題です。
ジョンマクレイン2018


0

Commons.Langライブラリを使用している場合、次のことができます。

ArrayUtils.toString(array)

int[] intArray = new int[] {1, 2, 3, 4, 5};
String[] strArray = new String[] {"John", "Mary", "Bob"};
ArrayUtils.toString(intArray);
ArrayUtils.toString(strArray);

出力:

{1,2,3,4,5}
{John,Mary,Bob}

0

// Javaのコンソールで配列要素のアドレスを出力する場合。

      int myArrayElement[] = {1,2,3,4,5,6,7,8,9,10};
       Log.i("MyTag",myIntegerNumbers + "");

これは質問に答えていないようです。
ユーザー

-1

配列の要素を出力する方法はいくつかあります。まず、配列とは何かについて説明します。..配列は、データを格納するための単純なデータ構造です。配列を定義すると、補助メモリブロックのセットを割り当てますRAM内。これらのメモリブロックは1ユニットで取得されます。

では、このような配列を作成します。

class demo{
      public static void main(String a[]){

           int[] number={1,2,3,4,5};

           System.out.print(number);
      }
}

次に出力を見て、

ここに画像の説明を入力してください

未知の文字列が出力されているのがわかります。前述のように、array(number array)が宣言されているメモリアドレスが出力されています。配列の要素を表示する場合は、次のように「for loop」を使用できます。

class demo{
      public static void main(String a[]){

           int[] number={1,2,3,4,5};

           int i;

           for(i=0;i<number.length;i++){
                 System.out.print(number[i]+"  ");
           }
      }
}

次に出力を見て、

ここに画像の説明を入力してください

1次元配列の要素を正常に印刷しました。2次元配列を検討します。2次元配列を "number2"として宣言し、 "Arrays.deepToString()"キーワードを使用して要素を出力します。それを使用する前に「java.util.Arrays」ライブラリをインポートする必要があります。

 import java.util.Arrays;

 class demo{
      public static void main(String a[]){

           int[][] number2={{1,2},{3,4},{5,6}};`

           System.out.print(Arrays.deepToString(number2));
      }
}

出力を検討し、

ここに画像の説明を入力してください

同時に、2つのforループを使用して、2D要素を印刷できます。ありがとうございます。


int array [] = {1、2、3、4、5}; for(int i:array)System.out.println(i);
Manjitha teshara 2018

これを試してみてください。これが配列を印刷する最も短い方法だと思います
Manjitha teshara

「配列(数値配列)が宣言されているメモリアドレスが出力されます」オブジェクトのシステムハッシュコードはまったく当てはまりません。これは、メモリアドレスを含む多くの事柄に基づく可能性がありますが、これは後で変更される可能性があり、ハッシュコードは変化する。そして現在、そのほとんどは乱数です。gotofinal.dev/java/2017/10/08/java-default-hashcode.html
GotoFinal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.