LINUX.ORG.RU

+ перед char переменной в Java

 


0

1

Не могу нагуглить такое. Есть переменная char a = '3' При System.out.println(+a) выводит её код в ASCI. Собственно что делает этот +? Сначала я думал, что он переводит переменную в число (то бишь символ 3 будет числом 3), но оказалось что не так.

Ну делает он каст в int, есть такое.

melkor217 ★★★★★
()

ты путаешь со String. char - это примитив.

ii8_ ★★★★
()

char — строго 8 бит. Т.е.

char a = 'a'; // работает
char b = 'ab'; // не работает

А строки к интам особо не приводишь.

String s1 = "a"; // все хорошо
String s2 = "ab"; // все хорошо
System.out.println(+s1); // ошибка


anonymous
()
Ответ на: комментарий от anonymous

char — строго 8 бит

С c путаешь. в java char — это символ «UTF-16» (суррогаты, вроде, считаются, все-равно, за 2 символа).

Quickern ★★
()
Последнее исправление: Quickern (всего исправлений: 1)

Рекомендую почитать Thinking in Java, там после первых 100 страниц такого вопроса не возникло бы уже.

coderage
()

Кстати по поводу оператора +, в С++ можно сделать так:

[cpde=cpp] auto f = +[](){ return 100; };

Что схранит в f «сырой» указатель на функцию. А все потому-что функтор-лямбда имеет оператор для каста в этот самый указатель, а наличие адресной арифметики разрешает использовать +, который собс-но вызывает этот каст.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.