Сравнение Java String / Char charAt()

#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) == '-' .