Что не так с выводом массива? [дубликат]

304
26 ноября 2016, 19:15

На данный вопрос уже ответили:

  • Нюанс при применении метода toString 2 ответа

Имеется код. Эклипс ошибок не выдаёт. Однако при компиляции выводится абракадабра, но в дебаггере (внутри) все ок. Что не так? Заранее благодарю!

package arrays;
    //Returning an Array from a Method
    public class TestArrays4 {
    public static int[] reverse(int[] list) {
           int[] result = new int[list.length];
           for (int i = 0, j = result.length - 1; i < list.length; i++, j--){
              result[j] = list[i];
           }
           return result;
        }

    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] c = reverse(a);
        System.out.println("hi " + c);
    }
}

в консоли

hi [I@1db9742
Answer 1

Проблема в том, что Вы неправильно выводите содержимое массива на консоль.

В строке:

System.out.println("hi " + c);

происходит неявный вызов метода toString() класса Object, который выглядит следующим образом:

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

Как видно, он возвращает имя класса и шестнадцатеричное представление хэшкода объекта. Собственно, это Вы и получаете.

Вывести содержимое массива можно, например, так:

for (int i=0; i<c.length; i++) {
    System.out.println(c[i]);
}

или так:

for (int i : c) {
    System.out.println(i);
}

или так (Java 8):

Arrays.stream(c).forEach(System.out::println);

или можно воспользоваться методом toString(...) класса Arrays:

System.out.println(Arrays.toString(c));
READ ALSO
Можно ли применять в Map двойной ключ?

Можно ли применять в Map двойной ключ?

Например, Map<String*, Integer> map = new TreeMap<String, Integer>();, там где * можно поставить < <String,String>, Integer > например?

319
как скрыть окно ошибки Winrar в Java

как скрыть окно ошибки Winrar в Java

Есть класс Java, который распаковывает архивы в каталогеЕсли архив поврежден, то открывается окно winrar с содержимым "Архив поврежден или имеет...

268
Что за методы removeAll и retainAll?

Что за методы removeAll и retainAll?

В гугле наткнулся на только такое описание:

833
Как отправить json запросом post?

Как отправить json запросом post?

Добрый день, подскажите пытаюсь отправить json для этого использую данную конструкцию

373