2015-01-22 2 views
0

и спасибо за чтение этого вопроса от новичка.Строка ввода и вывода строки Java

Я попытался запустить этот код на команду:

public class a{ 
    public static void main(String[] args){ 
    String[] s = args; 
    System.out.println(s); 
    } 
} 

и следующий ввод: "Java это строка"

дает мне:

«[Ljava.lang .String; @ 65d4ab0e "в качестве вывода.

Что делать, чтобы получить «это строка» в качестве вывода?

+0

's' является * массив *, который является объектом * *, и в Java, так как каждый объект имеет' ToString() 'метод , по умолчанию отображается представление имени класса, а затем добавляется знак '@', а затем хэш-код. Вы * не * хотите напечатать объект, но его содержимое, используйте ['Arrays.toString'] (http://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#toString-java.lang.Object:A-). – Maroun

+0

Есть несколько вариантов. Простейшие массивы Arrays.toString (s); другим вариантом является цикл через ваш массив строк и печать каждого члена по очереди. Вывод, который вы видите, представляет собой представление объекта массива, а не его членов. Сбивать с толку, если исходить из некоторых других языков, но логично, как только вы получите его. –

ответ

1

Вы печатаете объект массива, а не содержимое массива. Значение hashcode [Ljava.lang.String;@65d4ab0e указывает, что s является массивом и имеет значения String. Ведущий [ говорит, что объект, который вы напечатали, представляет собой массив.

public class a{ 
    public static void main(String[] args){ 
    String[] s = args; 
    System.out.println(Arrays.toString(s)); 
    } 
} 
+0

Это способ печати массива, но результат не является ожидаемым. – Tom

Смежные вопросы