How to Print an Array in Java
Use Arrays.toString(arr) from java.util.Arrays to print an array in Java. Direct System.out.println(arr) prints an internal identifier like [I@1540e19d, which is almost never what you want.
Why println(arr) doesn't work
int[] nums = {1, 2, 3};
System.out.println(nums); // [I@1540e19d β useless!
Arrays in Java do not override toString(). The default implementation from Object prints the type identifier ([I = int array) and the hash code in hex.
Arrays.toString() β 1D arrays
import java.util.Arrays;
int[] ints = {1, 2, 3};
double[] doubles = {1.1, 2.2, 3.3};
String[] strings = {"Java", "Python", "Go"};
System.out.println(Arrays.toString(ints)); // [1, 2, 3]
System.out.println(Arrays.toString(doubles)); // [1.1, 2.2, 3.3]
System.out.println(Arrays.toString(strings)); // [Java, Python, Go]
Arrays.deepToString() β 2D and multi-dimensional arrays
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(Arrays.toString(matrix)); // [[I@..., [I@..., ...] β wrong
System.out.println(Arrays.deepToString(matrix)); // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Loop-based printing
int[] nums = {10, 20, 30};
// Simple loop:
for (int n : nums) {
System.out.print(n + " ");
}
System.out.println(); // Output: 10 20 30
// With index:
for (int i = 0; i < nums.length; i++) {
System.out.printf("[%d]=%d%n", i, nums[i]);
}
Stream-based printing
int[] nums = {1, 2, 3};
Arrays.stream(nums).forEach(System.out::println);
// Join with delimiter:
String joined = Arrays.stream(nums)
.mapToObj(Integer::toString)
.collect(Collectors.joining(", "));
System.out.println(joined); // 1, 2, 3
Printing a List vs an array
List<Integer> list = List.of(1, 2, 3);
System.out.println(list); // [1, 2, 3] β Lists DO override toString()
int[] array = {1, 2, 3};
System.out.println(array); // [I@... β arrays don't
Lists (and all standard collections) implement toString() correctly; arrays do not. This asymmetry trips up beginners, which is why the Arrays utility class exists.