Вы можете подумать, что все операции должны следовать левой ассоциации.
Однако это не всегда случается в Java, и мы уже видели оператор, который следует правой ассоциации, – это оператор присваивания =.
Вопросы
Задача
Что является результатом каждого из следующих выражений?
Expression X: 3 % 4 – 10 * 5
Expression Y: 5 + 11 / 2 * 2.0
Expression Z: 100 / 0
Варианты:
1.
X: -47
Y: 10.0
Z: 0
2.
X: 1
Y: 10.0
Z: 0
3.
X: -47
Y: 15.0
Z: ERROR
4.
X: -47
Y: 10.0
Z: ERROR
Ответ: 3.
Присваивание
Мы видели много выражений со знаком равенства в предыдущих примерах.
Все они использовали оператор присваивания.
Синтаксис оператора присваивания представляет собой размещение переменной на левой стороне знака равенства, выражения на его правой стороне и точки с запятой в конце.
Смысл или семантика оператора присваивания – это присвоить значение, вычисленное выражением на правой стороне, переменной на левой стороне, и исходное значение, хранимое в переменной, будет заменено.
Это обозначение может быть немного запутанным, поскольку в большинстве утверждений присваивания, левая сторона может быть не равна правой стороне в математическом смысле.
Например, вы можете иметь что-то вроде, а = а + 1;
Это не корректно в качестве математического выражения, но это верное утверждение присваивания.
Переменная здесь имеет начальное значение 1, и ее значение будет изменено на 2 после присвоения.
Для определенного типа существует набор действительных операторов, которые могут быть применены к этому типу.
Если кто-то хочет применить некоторый оператор, который действителен только для другого типа, необходимо преобразование типов, чтобы преобразовать тип данных из одного типа в другой.
Преобразование типа может быть сделано двумя способами: это явные и неявные преобразования.
Неявное преобразование изменяет значение одного типа в другой без специальной инструкции от программиста.
Например, целый тип int разрешено присваивать типу float, хотя при этом может быть потеряна точность.
Основное правило заключается в том, что неявное преобразование разрешено, если диапазон значений первого типа является подмножеством второго.
Его часто называют расширяющим преобразованием.
Обратное это сужающее преобразование, которое, как правило, не допускается без явного преобразования.
Явное преобразование выполняется приведением типов.
Приведение типов делается путем размещения имени целевого типа в скобках перед типом данных, которые будут преобразованы.
Например, если dValue является double переменной, компилятор не допустит присвоения int или float без преобразования явного типа, указав int