Извлечение символов из строки в Java

1

Я начинаю программировать и запускать этот код в Java

 String demo = "This is first string";
 char ch[]= demo.toCharArray();
 System.out.println(ch);

Вывод:

 This is first string

в то время как,

 System.out.println("result is "+ch);

Вывод: - (Отображение hashcode, связанного с памятью объекта)

 result is: someHashcode

1) Почему у нас есть другой выход для обоих из них (вышеупомянутый код)? Что на самом деле происходит здесь.

И с другой стороны

 int num[]={1,2,3,4};
 System.out.println(num);

вывод:-

 somehashcode

2) Это не работает, как в случае с массивом символов (как, например, упомянутый выше код), и дает результат как hashcode, Why?

  • 0
    Судя по вашим предыдущим вопросам, кажется, что вы не знакомы с принятием механизма ответа . Короче говоря, если какой-то ответ решит вашу проблему, вы можете пометить его как решение. Это своего рода механизм «спасибо» (потому что он улучшает репутацию отвечающего на +15 баллов) и помечает вашу проблему как «решенную».
Теги:
string
char

1 ответ

5
Лучший ответ

PrintStream перегрузил метод println для массива символов. Когда вы передаете ему массив символов, он печатает символы из него, как если бы это была строка.

Hovewer, когда вы передаете массив других типов, он рассматривает его как объект - toString() его представление toString().

И в этом примере:

System.out.println("result is "+ch);

Вы добавляете массив к строковому литералу, поэтому toString форма ch будет добавлена в литерал, поэтому вы не получите ожидаемого результата.

  • 2
    Просто быть чистым. out является статической переменной в классе System типа PrintStream . Таким образом, он имеет доступ к методам println(String) и println(char[]) (среди многих других). Теперь PrintStream#print(char[]) будет печатать все символы из переданного массива, но в случае "result is "+ch этот код будет преобразован в String , а не в char[] потому что когда вы используете + и один из Операндом является String, а другим - нет, компилятор объединит эти значения с помощью StringBuilder, который для объектов, не относящихся к String, добавляет результаты метода toString() (который для массивов возвращает тип @ hexhash.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню