Объяснение ссылки на массив

1

Для кода

int []arr = new int[4];
System.out.println(arr);

Результат выглядит примерно так:

[I @54640b25

Что такое распечатка компилятора? Адрес памяти arr? В отличие от C, Java, похоже, не приравнивает имя массива (в изоляции) к первой позиции массива.

Теги:
arrays

2 ответа

6
Лучший ответ

В Java каждый объект имеет метод toString(), а массивы - это объекты. По умолчанию отображается представление имени класса, затем добавляется "@", а затем хэш-код:

Метод toString для класса Object возвращает строку, состоящую из имени класса, объектом которого является экземпляр объекта, символа at-sign '@' и шестизначного шестнадцатеричного представления хеш-кода объекта

Попробуйте напечатать следующую строку, и вы должны получить тот же результат:

int[] arr = new int[5]; 
System.out.println(arr.getClass().getName() + "@" + Integer.toHexString(arr.hashCode()));
  • 1
    и, чтобы добавить, массивы являются объектами в Java в отличие от C.
  • 1
    Передача arr в качестве аргумента для println () автоматически вызывает метод toString () arr?
Показать ещё 2 комментария
3

Для печати значения массива используйте следующее:

Arrays.toString(arr);

Использование каталога System.out.println(arr) будет печатать с использованием метода toString по умолчанию, который возвращает:

object.getClass().getName() + "@" + Integer.toHexString(object.hashCode())

Ещё вопросы

Сообщество Overcoder
Наверх
Меню