https://stackoverflow.com/questions/25809186/byte-not-showing-addition-result-in-java
Не существует набора команд для выполнения операции над byte типом.
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.11.1
Арифметические инструкции специализируются на числовых типах виртуальной машины Java. Там нет прямой поддержки целочисленной арифметики на значениях byte, short и char, или для значений boolean типа; эти операции обрабатываются инструкциями, работающими по типу int, Целочисленные и инструкции с плавающей запятой также различаются по своему поведению при переполнении и делении на ноль.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public class testCasting { public static void main(String[] args) { // ПРАВИЛО: // Все арифметические операции производимые над двумя значениями типа (byte, short) // в качестве результата, возвращают значение типа int. byte a =5, b = 3; //byte c = a + b; //Здесь будет ошибка т.к. JVM машина проводит арифметические операции только с целочисленным int //byte c =(byte)a + 5; //Тоже ошибка //c = a - b; byte c =(byte)(a++ + ++b); //Но если привести явное преобразование типа то всё будет выполнятся int f = a + b; System.out.println("Результат сложения констант типа byte: "+c+" "+a+" "+b); final byte aC = 10; //С константами даже не надо проводить преобразования final byte bC = 20; byte cC = aC + bC; System.out.println("Результат сложения констант типа byte: "+cC); //Ещё головоломка с инкрементами int a2 = 6, b2 = 4; a2 = ++a2 + b2++ + a2++; // 18 = 7 + 4 + 7(a2++ - значения ++ считывается сразу) int c2 = --a2 + b2--; // 21 = 17 + 4 System.out.println(a2+" "+b2+" "+c2); } } |
| Категория: Java
| Тэги: casting