Чтение онлайн

на главную - закладки

Жанры

Основы программирования с Java
Шрифт:

– +

Выражение, заключенное в круглые скобки, вычисляется первым.

Для вложенных скобок внутреннее выражение вычисляется первым.

Операторы * умножения, / деления и % остатка вычисляются вторыми, и, если их несколько, вычисление идет слева направо.

Операторы сложения и вычитания вычисляются после остальных операторов, и, если

их несколько, вычисление идет слева направо.

Другая важная вещь в вычислении выражений, это концепция ассоциативности.

Ассоциативность используется для определения порядка, в котором операторы с одинаковым приоритетом вычисляются в выражении.

Правило ассоциации в этом примере, – это вычисление слева направо, и называется левой ассоциативностью.

При этом круглые скобки могут быть вставлены для усиления порядка вычисления.

Вы можете подумать, что все операции должны следовать левой ассоциации.

Однако это не всегда случается в 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 или float в скобках.

Далее, мы вернемся к примеру CourseGrade и используем то, что мы только что узнали о переменных, объявлениях, типах данных и арифметических выражениях, чтобы получить более глубокое понимание того, как эта программа выполняется.

Выделение памяти

Давайте теперь используем пример СourseGrade для того, чтобы проиллюстрировать эффект объявления и выполнения программы.

Как уже говорилось, объявление идентификатора, в дополнение к определению его типа данных, также позволяет компьютеру делать выделение памяти, когда программа выполняется.

В этой программе, объявляются 7 идентификаторов, а именно examweight, labWeight, hwWeight, examScore, labScore, hwScore и finalGrade.

Я буду использовать схему, которая показывает набор из ячеек, чтобы проиллюстрировать выделение памяти, когда переменная объявлена.

Это только для иллюстрации и объем памяти, конечно отличается от ячейки.

Если объявление int examWeight сделано, пространство памяти выделяется в соответствии с размером типа данных, в данном случае int.

Присвоение значения 70 для examWeight приведет к инициализации значения, хранимого в памяти, до 70. В компьютере, значение 70 на самом деле представлено как строка битов 0 и 1.

Объявление и инициализация для labWeight и hwWeight проходит через аналогичный процесс.

Поделиться:
Популярные книги

Северянин

Муравьёв Константин Николаевич
2. Где-то там
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Северянин

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.75
рейтинг книги
Кодекс Охотника. Книга VI

Метатель. Книга 2

Тарасов Ник
2. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель. Книга 2

Законы Рода. Том 4

Мельник Андрей
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Катынский синдром в советско-польских и российско-польских отношениях

Яжборовская Инесса Сергеевна
История сталинизма
Научно-образовательная:
история
5.00
рейтинг книги
Катынский синдром в советско-польских и российско-польских отношениях

Палач

Крэйн Виктория
Фантастика:
ужасы и мистика
8.49
рейтинг книги
Палач

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Шепот дьявола

Хупер Кей
5. Спецотдел Ноя Бишопа
Любовные романы:
остросюжетные любовные романы
9.05
рейтинг книги
Шепот дьявола

Оборотни. Естественный отбор.

Петров Артем Дмитриевич
1. Оборотни
Фантастика:
фэнтези
6.64
рейтинг книги
Оборотни. Естественный отбор.

Элементы обороны: заметки о российском оружии

Коновалов Иван Павлович
Документальная литература:
публицистика
5.00
рейтинг книги
Элементы обороны: заметки о российском оружии

Газлайтер. Том 20

Володин Григорий Григорьевич
20. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.80
рейтинг книги
Газлайтер. Том 20

А. Смолин, ведьмак. Цикл

Васильев Андрей Александрович
А. Смолин, ведьмак
Фантастика:
городское фэнтези
5.00
рейтинг книги
А. Смолин, ведьмак. Цикл

Время прощать

Гришэм Джон
2. Джейк Брайгенс
Детективы:
триллеры
7.78
рейтинг книги
Время прощать