#java #char #comparison #charat
#java #символ #сравнение #charat
Вопрос:
Я видел различные сравнения, которые вы можете выполнять с помощью этого charAt()
метода.
Однако я не могу понять некоторые из них.
String str = "asdf";
str.charAt(0) == '-'; // What does it mean when it's equal to '-'?
char c = '3';
if (c < '9') // How are char variables compared with the `<` operator?
Буду признателен за любую помощь.
Комментарии:
1. «Что это значит, когда оно равно ‘-‘?» не имеет значения, может знать только создатель этого кода…
2. «Как переменные char сравниваются с
<
оператором?» примитивchar
— это числовой тип, и его можно сравнить с>
или<
Ответ №1:
// Что это значит, когда оно равно ‘-‘?
Каждая буква и символ являются символом. Вы можете посмотреть на первый символ строки и проверить соответствие.
В этом случае вы получаете первый символ и смотрите, является ли он символом минус. Этот знак минус (char) 45
показан ниже
// Как переменные char сравниваются с
<
оператором?
В Java все символы на самом деле являются 16-разрядными числами без знака. Каждый символ имеет номер, основанный на нем в юникоде. например '9'
, является символом (char) 57
Это сравнение верно для любого символа, меньшего, чем код 9
, например, для пробела.
Первый символ вашей строки 'a'
, который является (char) 97
so (char) 97 < (char) 57
, является false .
Комментарии:
1. Это основа для кодирования символов. en.wikipedia.org/wiki/Character_encoding В приведенном выше определении используется кодировка символов ASCII.
Ответ №2:
String str = "asdf";
String output = " ";
if(str.charAt(0) == '-'){
// What does it mean when it's equal to '-'?
output= "- exists in the first index of the String";
}
else {
output="- doesn't exists in the first index of the String";
}
System.out.println(output);
Он проверяет, существует ли этот символ в индексе 0, это сравнение.
Что касается if (c < '9')
, сравниваются значения ascii для c и 9. Я не знаю, зачем вам проверять, является ли ascii-эквивалент c меньшим, чем ascii-эквивалент ‘9’.
Если вы хотите получить значение ascii любого символа, то вы можете:
char character = 'c';
int ascii = character;
System.out.println(ascii);
Ответ №3:
str.charAt(0) == '-';
в данном случае возвращает логическое false
значение .
if (c < '9')
сравнивает значение ascii ‘3’ со значением ascii ‘9’ и снова возвращает логическое значение.
Ответ №4:
str.charAt(0) == '-'
Этот оператор возвращает значение true, если символ в точке 0 равен ‘-‘, и false в противном случае.
if (c < '9')
Это сравнивает значение ascii c со значением ascii ‘9’ в данном случае 99 и 57 соответственно.
Ответ №5:
Символы являются примитивным типом в Java, что означает, что это не сложный объект. Как следствие, каждый раз, когда вы проводите сравнение между chars
ними, вы напрямую сравниваете их значения.
Символы Java определяются в соответствии с исходной спецификацией unicode, которая присваивает каждому символу 16-битное значение. Это значения, которые Java сравнивает, когда вы сравниваете что-то вроде c>'3'
или str.charAt(0) == '-'
.