Я взял 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));