Для кода
int []arr = new int[4];
System.out.println(arr);
Результат выглядит примерно так:
[I @54640b25
Что такое распечатка компилятора? Адрес памяти arr? В отличие от C, Java, похоже, не приравнивает имя массива (в изоляции) к первой позиции массива.
В Java каждый объект имеет метод toString()
, а массивы - это объекты. По умолчанию отображается представление имени класса, затем добавляется "@", а затем хэш-код:
Метод
toString
для класса Object возвращает строку, состоящую из имени класса, объектом которого является экземпляр объекта, символа at-sign '@' и шестизначного шестнадцатеричного представления хеш-кода объекта
Попробуйте напечатать следующую строку, и вы должны получить тот же результат:
int[] arr = new int[5];
System.out.println(arr.getClass().getName() + "@" + Integer.toHexString(arr.hashCode()));
Для печати значения массива используйте следующее:
Arrays.toString(arr);
Использование каталога System.out.println(arr)
будет печатать с использованием метода toString
по умолчанию, который возвращает:
object.getClass().getName() + "@" + Integer.toHexString(object.hashCode())