Главная страница

АБОБА. Справочник по программированию на Java Методическое пособие


Скачать 242.41 Kb.
НазваниеСправочник по программированию на Java Методическое пособие
АнкорАБОБА
Дата20.02.2022
Размер242.41 Kb.
Формат файлаdocx
Имя файла12642_java_method_1.docx
ТипСправочник
#368066
страница20 из 67
1   ...   16   17   18   19   20   21   22   23   ...   67

Замыкающие логические операции


Java предоставляет две интересные булевских операции, не встречающиеся во многих других языках программирования. Это вторые версии булевских операций AND и OR, получившие название замыкающих логических операций. Как видно из ранее приведенной таблицы, результат выполнения операции OR равен true, когда значение операнда A равно true, независимо от значения операнда B. Аналогично, результат выполнения операции AND равен false, когда значение операнда A равно false, независимо от значения операнда B. При использовании форм || и && этих операций вместо | и & программа Java не будет вычислять значение правого операнда, если результат выражения можно определить по значению одного левого операнда. Это свойство очень удобно в тех случаях, когда значение правого операнда зависит от значения левого. Например, следующий фрагмент кода демонстрирует преимущество применения замыкающей логической операций для выяснения допустимости операции деления перед вычислением ее результата:

if (denom != 0 && num / denom > 10)

Благодаря применению замыкающей формы операции AND (&&) исключается риск возникновения исключения времени выполнения в случае равенства знаменателя (denom) нулю. Если бы эта строка кода была записана с применением одинарного символа & операции AND, программа вычисляла бы обе части выражения, что приводило бы к исключению времени выполнения при равенстве значения denom нулю.

Замыкающие формы операций AND и OR принято применять в тех случаях, когда требуется использование операций булевской логики, а односимвольные версии – исключительно для побитовых операций. Однако существуют исключения из этого правила. Например, рассмотрим следующий оператор:

if(c==1 & e++ < 100) d = 100;

В данном случае одиночный символ & гарантирует применение операции инкремента к значению e независимо от равенства 1 значения c.

Операция присваивания


Мы использовали операцию присваивания, начиная с главы 2. Теперь пора рассмотреть эту операцию формально. Символом операции присваивания служит одиночный знак равенства, =. В Java операция присваивания работает аналогично тому, как она работает во многих компьютерных языках. Она имеет следующую общую форму:

переменная = выражение;

В этом операторе тип переменной должен соответствовать типу выражения. Операция присваивания обладает одной интересной особенностью, с которой вы, возможно, еще не знакомы: она позволяет создавать цепочки присваиваний. Например, рассмотрим следующий фрагмент кода:

int x, y, z;

x = y = z = 100;

В этом фрагменте кода единственный оператор устанавливает значения трех переменных x, y и z равными 100. Это обусловлено тем, что = – операция, которая использует значение правого выражения. Таким образом, значение выражения z=100 равно 100, которое затем присваивается переменной y, а затем – переменной x. Использование “цепочки присваивания” – удобный способ установки общего значения группы переменных.

Операция ?


Синтаксис Java содержит специальную тернарную операцию, которой можно заменять определенные типы операторов if-then-else. Это операция ?. Вначале она может казаться несколько непонятной, но со временем вы убедитесь в ее исключительной эффективности. Эта операция имеет следующую общую форму:

выражение1 ? выражение2 : выражение3

Здесь выражение1 – любое выражение, приводящее к значению типа boolean. Если значение выражения1 – true, программа вычисляет значение выражения2. В противном случае программа вычисляет значение выражения3. Результат выполнения операции ? равен значению вычисленного выражения. И выражение2, и выражение3 должны возвращать значение одного и того же типа, которым не может быть тип void.

Следующий пример программы демонстрирует применение операции ?. Эта программа служит для получения абсолютного значения переменной.

// Демонстрация использования операции ?.

class Ternary {

public static void main(String args[]) {

int i, k;

i = 10;

k = i < 0 ? -i : i; // получение абсолютного значения переменной i

System.out.print("Абсолютное значение ");

System.out.println(i + " равно " + k);

i = -10;

k = i < 0 ? -i : i; // получение абсолютного значения переменной i

System.out.print("Абсолютное значение ");

System.out.println(i + " равно " + k);

}

}

Эта программа генерирует следующий вывод:

Абсолютное значение 10 равно 10

Абсолютное значение -10 равно 10
1   ...   16   17   18   19   20   21   22   23   ...   67


написать администратору сайта