2014-12-28 2 views

ответ

4

Это стандартная реализация toString() в Object, которую вы видите. Вы можете использовать Arrays.toString для читаемого результата (убедитесь, что импортирован java.util.Arrays):

System.out.println(Arrays.toString(a)); 
0

Он пробует напечатать массив.

Если вы хотите, чтобы получить читаемый результат использования

System.out.println(Arrays.toString(a)); 
0

ожидается принять компиляции или во время выполнения error.I Принимал output.It-х «[I @ 1ba4806» .Что причина из этого в Java?

Поскольку в настоящее время toString метод из класса Object становится вызван, он выглядит следующим образом

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

Вот почему вы видите [[email protected]

Вы можете распечатать содержимое массива с помощью Arrays.toString который перегруженный метод в Arrays класс для печати массива.

System.out.println(Arrays.toString(a)); 

Для int[] параметров реализации метода выглядит

public static String toString(int[] a) { 
    if (a == null) 
     return "null"; 
    int iMax = a.length - 1; 
    if (iMax == -1) 
     return "[]"; 

    StringBuilder b = new StringBuilder(); 
    b.append('['); 
    for (int i = 0; ; i++) { 
     b.append(a[i]); 
     if (i == iMax) 
      return b.append(']').toString(); 
     b.append(", "); 
    } 
} 
0

Я взял output.It в "[[email protected]" .Что причина этого в Java?

out статическое поле в System классе экземпляр PrintStream и нет println(int[]) метода PrintStream класса, который будет перебирать для вас по всем элементам переданного массива и напечатать их, но есть println(Object o), который пытается конвертировать передал объект o в строку, которая будет напечатана.

Чтобы сделать этот метод использует String.valueOf(o) метод, который в случае o будучи нуль будет возвращать «нулевой» Строка, или в случае, когда o не равно нулю (как в вашем примере) будет возвращать результат toString() метод вызывается из проходил объект. Так System.out.println(a); печатает результат a.toString().

Теперь почему массив имеет toString() метод? Ну, он был унаследован от класса Object (потому что все массивы расширяют Object). Также массивы не переопределить этот метод, и они оставляют его таким образом, он был реализован в Object классе, поэтому его код выглядит

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

, который, как вы видите возвращается [email protected].Одномерный массив целых чисел представлен как [I, где число [ определяет количество измерений, а I представляет int тип.


Если вы хотите распечатать содержимое массива, либо придется перебрать все элементы и распечатать их

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

или

for (int element : array){ 
    System.out.println(element); 
} 

ИЛИ вы можете использовать Arrays.toString(int[]) метод , который сделает это для вас и будет генерировать строку в форме [1, 2, 3, ....], поэтому все, что вам нужно будет сделать, это напечатать ее как

System.out.println(Arrays.toString(a)); 
Смежные вопросы