Java에서는 배열이 재정의되지 않으므로 toString()
직접 인쇄하려고하면 다음 과 같이 정의 된대로 배열 className
의 16 진수 + ‘@’+ 를 얻습니다 .hashCode
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]
답변
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 ]
답변
항상 표준 라이브러리를 먼저 확인하십시오.
import java.util.Arrays;
그런 다음 시도하십시오.
System.out.println(Arrays.toString(array));
또는 배열에 다른 배열이 요소로 포함 된 경우 :
System.out.println(Arrays.deepToString(array));
답변
그러나 “항상 표준 라이브러리를 먼저 확인하십시오”에 대해서는 알아두면 좋을 것입니다. Arrays.toString( myarray )
-이 작업을 수행하는 방법을보기 위해 myarray 유형에 집중하고 있기 때문에. 이 일을 반복하고 싶지는 않았습니다 .Eclipse 디버거에서 볼 수있는 것과 비슷하게하기 위해 쉬운 호출을 원했고 myarray.toString () 은하 지 않았습니다.
import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );
답변
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
*/
답변
Java 8부터는 괄호없이 배열 요소를 인쇄하기 join()
위해 String 클래스 가 제공 하는 메소드를 활용할 수 있으며 선택 구분 기호 (아래에 표시된 예의 공백 문자)로 구분됩니다.
String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting)
결과는 “Hey there amigo!”입니다.
답변
Java 1.4를 사용하는 경우 대신 다음을 수행 할 수 있습니다.
System.out.println(Arrays.asList(array));
(물론 1.5 이상에서도 작동합니다.)
답변
Arrays.toString
직접 답변으로 @Esko를 포함 하여 Arrays.toString
and Arrays.deepToString
메소드를 사용하여 여러 가지가 제공하는 솔루션 이 가장 좋습니다.
Java 8-Stream.collect (joining ()), Stream.forEach
아래에는 제안 된 다른 방법 중 일부를 나열하려고합니다. 가장 주목할만한 추가 기능은 Stream.collect
연산자를 사용 하고을 사용하여 수행중인 작업 을 모방하는 것 입니다.joining
Collector
String.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);