Может ли кто-нибудь описать процесс, который происходит в этом коде (строка за строкой)? - PullRequest
0 голосов
/ 13 февраля 2019
class Example{
public static void main(String args[]){
char a='a';
System.out.println(a=='\u0061');
System.out.println(\u0061=='\u0061');
System.out.println(\u0061==97);
\u0061='\u0041';
System.out.println('A'=='\u0041');
System.out.println(65=='\u0041');
System.out.println(65==a);
System.out.println('\u0041'==a);        
}
}

Вывод: true * 7

Я не могу понять этот код.Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019
  1. char a='a'; - переменная a хранит нижний регистр символа
  2. System.out.println(a=='\u0061'); - в нижнем регистре UTF символ представляется как \ u0061
  3. System.out.println(\u0061=='\u0061'); - \u0061 значение не заключено в кавычки, поэтому оно декодируется в нижний регистр a во время компиляции , что делает его a=='\u0061', фактически таким же, как в пункте 2.
  4. System.out.println(\u0061==97); - так же, каквыше, потому что 97dec = 61hex, за исключением того, что здесь мы не используем нотацию UTF для представления символа, вместо этого мы используем числовое значение char
  5. \u0061='\u0041'; - a присвоенное значение переменной \ u0041 в верхнем регистре A
  6. System.out.println('A'=='\u0041'); - то же, что и точка 2
  7. System.out.println(65=='\u0041'); - 65dec = 41hex, то же самое, что и точка 4, но здесь мы сравниваем две константы, а не a переменная.
  8. System.out.println(65==a); - см. Выше
  9. System.out.println('\u0041'==a); - см. Выше
0 голосов
/ 13 февраля 2019

В соответствии с спецификацией языка Java :

Экранирование Unicode в форме \ uxxxx, где xxxx - шестнадцатеричное значение, представляет кодовую единицу UTF-16, кодировка которойравен хххх.

Значение Unicode для символа 'a' равно 97 (61 в шестнадцатеричном формате), а для 'A' - 65 (41 в шестнадцатеричном).Таким образом, символ \u0061 в вашем источнике читается как a, а символ \u0041 читается как A.

Ваш код читается как:

class Example{
    public static void main(String args[]){
        char a='a';
        System.out.println(a=='a');
        System.out.println(a=='a');
        System.out.println(a==97);
        a='A';
        System.out.println('A'=='A');
        System.out.println(65=='A');
        System.out.println(65==a);
        System.out.println('A'==a);        
    }
}
...