Я изучаю Java уже 2 месяца, и каждый раз, когда мне кажется, что я начинаю понимать это, я понимаю, что мне все еще не хватает какой-то сильной основы.
В настоящее время работаю над подготовкой к экзамену, иОдним из упражнений является обнаружение ошибок компиляции. Хотя ответы даны, я все еще не понимаю большинство этих ошибок.
Вот код:
boolean b = true;
String s;
char c = '8'; // unicode = 56
byte k = 6;
int i = 7;
b = !b < false; // compilation error #1
s = k + c + "" + (c < 8);
s = k + c + (c < 8) + "" ; // compilation error #2
c = c + 1; // compilation error #3
b = b + ""; // compilation error #4
c++;
b = true == (!(true != !(i != 7)) !=b || (c < '2'));
b = (true || false) == 1 && b; // compilation error #5
Я понимаю ошибки # 1 и # 5.
Я не понимаю, ошибка # 2 . Кажется, это проблема с добавлением int и логического значения, но если это так, то почему нет ошибки компиляции для предыдущей строки, которая точно такая же строка кода минус позиция ""и (с <8). Я видел компиляцию без ошибок до логической строки, такой как </p>
(5 < 3) + "ok" = "falseok"
Означает ли это, что конкатенация логического значения может быть выполнена только с помощью Stringchain, но не другого примитива? Тогда почему вторая строка компилируется?
Я не понимаю ошибку # 3 . Компилятор говорит: «несовместимые типы: возможное преобразование с потерями из int в char». Почему char неявно преобразуется в int? В классе мы узнали, что byte, short и тип char могут автоматически конвертироваться в int, если в одном и том же уравнении, чем и it, так почему же это не происходит здесь?
Я не понимаю ошибку# 4 . Компилятор говорит: «несовместимые типы: java.lang.String не может быть преобразовано в логическое значение». Так же, как # 1, почему в этом случае конкатенация booleanString не принимается?
Большое спасибо.