Я буду использовать здесь другой цвет, чтобы проиллюстрировать, что int и double имеют разные требования к памяти.
Поскольку значения не были присвоены для этих переменных, их значения не известны.
Фактически, сначала им должны быть присвоены значения до того, как может быть сделана на них ссылка.
После того, как объявления выполнены, программа предложит пользователю ввести значения для examScore, labScore и hwScore.
Предположим, что пользователь ввел 90,0 для examscore.
Обратите внимание, что даже если пользователь ввел 90, без десятичной точки, значение будет преобразовано в число с плавающей точкой.
Опять же, я использую здесь другой цвет, чтобы отличить double тип от int типа, который находится в синих ячейках.
Аналогично, значение 85,0 вводится для labScore, и 80,5 вводится для hwScore.
Чтобы продолжить выполнение кода, будет выполнен другой оператор присваивания, который изменяет значение examScore.
Вычисление выражения справа от оператора присваивания сначала вычисляет выражение внутри круглых скобок.
Значение examWeight извлекается из памяти, а затем делится на 100,0.
Следует отметить, что examWeight представляет собой целое число, и если оно делилось бы на другое целое число 100, то результатом был бы ноль.
Но так как мы используем 100.0, которое является числом с плавающей точкой, результатом деления будет число с плавающей точкой 0.7.
Значение examScore затем будет извлечено из памяти и умножится на 0,7.
Полученное значение 63,0 затем будет присвоено переменной на левой стороне оператора присваивания.
Результат выражения заменит исходное значение в памяти для examscore новым значением 63.0.
Аналогично, значения для labScore и hwScore обновятся и, наконец, значение finalGrade будет рассчитано путем добавления обновленных значений для examScore, labScore и hwScore.
Полученное значение 88,05 затем будет присвоено участку памяти для finalGrade.
Во время стадии анализа задачи при проектировании исходной задачи, было определено, что веса экзаменов, лабораторных и домашних заданий должны быть предварительно определены, и их значения должны быть одинаковыми для всех студентов в том же курсе.
Если мы хотим предотвратить случайное изменение весов, мы объявим эти идентификаторы как константы, поставив final в качестве ключевого слова в начале объявления.
В некотором смысле, вы можете думать об этом как запереть ячейку памяти и запретить любую попытку изменить ее значение в другой части программы.
Можно сказать, что, если студент сдал плохо экзамены, но сделал хорошо лабораторные работы, попытка уменьшить вес для экзамена и увеличить вес для лабораторных будет блокирована.
Демонстрация примера
Давайте теперь посмотрим на программу в среде IntelliJ IDEA. Мы откроем проект под названием CourseGrade, который является программой, которую мы только что обсуждали.
Откроем файл CourseGrade в редакторе исходного кода.
И вы можете