Java Добавление символа не имеет смысла (для меня) - PullRequest
0 голосов
/ 20 марта 2020

Итак, у меня есть этот код здесь:

char a = '1';
char b = '2';
System.out.println(a+b); \\ Outputs 99

Я хочу знать почему, так как этот код:

char a = '1' + '2';

    System.out.println(a); \\ Outputs c

Я хочу улучшить свой примитивный ум, пожалуйста, помогите родным дух.

Ответы [ 2 ]

1 голос
/ 20 марта 2020

символов содержат значение в реальном; когда вы пишете

char a = 49;
char k = '1'; // both of them holds same character because '1' code in ascii 49

и когда вы обрабатываете две переменные в операции арифметики c и если один из них имеет тип (байтовый, короткий или символьный), эти типы повышаются в int, поэтому

System.out.println(a+b); // both of them promote int
char c = a + b; // assign c, 99 which represents 'c'
0 голосов
/ 20 марта 2020

Они добавляются как их десятичные числа c ASCII-значение.

Часть кода, которая неявно делает a+b, добавляет их как целые числа. Итак, если вы запустите следующий код:

class Example {
    public static void main(String[] args) {
        char ch = '1';
        char ch2 = '2';
        int num = ch;
        int num2 = ch2;
        System.out.println("ASCII value of char " + ch + " is: " + num);
        System.out.println("ASCII value of char " + ch2 + " is: " + num2);
    }
}

Вы увидите, что выход каждого символа равен

ASCII-значение символа 1: 49

ASCII-значение char 2 равно: 50

Поэтому, когда вы делаете это System.out.println(a+b);, они добавляются как целочисленное значение, которое оказывается 99

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...