Строка с одним символом может быть приведена к символу? - PullRequest
0 голосов
/ 12 апреля 2020
String message = "a";
char message1 = (char) message;
System.out.println(message1);

Дает мне ошибку вывода,

Это должно быть легко преобразовано, потому что строка состоит из одного символа "a"

Я знаю, что могу сделать это явно извините , почему эти два персонажа несовместимы, если они хранят одно и то же (только один символ)?

Ответы [ 4 ]

2 голосов
/ 12 апреля 2020

Как вы уже видели, нет, вы не можете разыграть один символ String до char. Но вы можете извлечь это явно:

String message = "a";
char message1 = message.charAt(0);
1 голос
/ 12 апреля 2020

Нет, вы не можете этого сделать. Вы можете привести char к Character, потому что тип объекта Character является «коробочной» версией char базового типа .

Character charObject  = (Character) 'c';
char charBase = (char) charObject;

на самом деле, потому что для автоматической упаковки и автоматической распаковки вам не нужно явное приведение:

Character charObject  = 'c';
char charBase = charObject;

Однако String является типом объекта во многом как любой другой тип объекта. Это означает, что вы не можете привести его к char, вам нужно использовать метод charAt(int index) для извлечения символов из него.

Будьте осторожны, хотя вы можете захотеть использовать codePointAt(int index) вместо этого, поскольку кодовые точки Unicode могут выходить за пределы 65536 кодовых точек, которые могут быть сохранены в 16 битах, которые представляет char. Поэтому убедитесь, что в вашей строке нет символов, определенных в «дополнительных плоскостях» при использовании charAt(int index).

Как и в Java, любой тип может быть преобразован в String, возможно, напрямую добавляйте символы в строку, поэтому "strin" + 'g' работает нормально. Это также потому, что оператор + для String является синтаксическим c сахаром в Java (т.е. другие объекты не могут использовать + в качестве оператора, вам придется использовать метод, такой как append()). Помните, что возвращает новую строку вместо расширения исходной строки "strin". Java строки в конце концов неизменны.

1 голос
/ 12 апреля 2020

Вы не можете использовать String для символа. Ниже приведен фрагмент, который всегда выбирает первый символ из строки:

char c = message.charAt(0);

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

String g = "test";
char[] c_arr = g.toCharArray(); // returns a length 4 char array ['t','e','s','t']
0 голосов
/ 12 апреля 2020

Строка с одним символом больше похожа на char[1]. В любом случае, получите символ напрямую:

String ex = /* your string */;
if (!ex.isEmpty()) {
    char first = ex.charAt(0);
}
...