Почему вместо вывода в консоль ссылки, хранящейся в переменной, выводится содержимое первой ячейки массива?
Объясните механику в данном случае, пожалуйста.
public class Solution {
public static void main(String[] args) {
String[] list;
list = new String[10];
list[1] = "someString";
System.out.printf("list = %s", list);
}
}
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Вы вызываете метод java.io.PrintStream#printf(java.lang.String, java.lang.Object...). Последний аргумент - это varargs. Передаваемый Вами массив интерпретируется не как один объект, а как множество объектов, содержащихся в нем. Т.е. как будто бы Вы вызвали метод следующим образом - System.out.printf("list = %s", list[0], list[1],list[2],list[3],list[4],list[5],list[6],list[7],list[8],list[9]);.
Вы можете привести Ваш массив к классу Object:
public class Solution {
public static void main(String[] args) {
String[] list;
list = new String[10];
list[1] = "someString";
System.out.printf("list = %s", (Object)list);
}
}
Результат:
list = [Ljava.lang.String;@4de8b406