Nov 03, 2020 10:31
Готовлюсь к сертификационному экзамену по Java (OCA, 1Z0-808), с трудом прохожу тесты Enthuware. Вот уже неделю волосы стоят дыбом и не опускаются от вопроса - что же курили создатели?
Образец кода:
public class TestClass {
public static void main(String[] args){
byte b = 127;
System.out.println((b+=1)+" "+((Object)b).getClass());
byte a = 127;
System.out.println((a+1)+" "+((Object)(a+1)).getClass());
}
}
Результат компилирования:
-128 class java.lang.Byte
128 class java.lang.Integer
То есть, если я добавлю единицу к переменной типа "byte", то тип поменяется на "int", а результат будет 128. Если же я напишу в сокращённой форме "+=1", то тип останется "byte", а результат будет (-128). Кстати, строчка a=a+1 не компилируется. Пишет, что я пытаюсь присвоить int переменной byte.
И это только один пример. Весь язык такой. Они хотели сделать "проще, чем С++". Ну-ну.
информатика