КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Арифметические операцииСтр 1 из 11Следующая ⇒ Логические операции К логическим операциям относятся: · отрицание (NOT) ! (обозначается восклицательным знаком); · конъюнкция (AND) &(амперсанд); · дизъюнкция (OR) | (вертикальная черта); · исключающее ИЛИ (XOR) ^ (каре). Они выполняются над логическими данными, их результатом будет тоже логическое значение true или false. Законы этих операций показаны в табл. 1.1. Таблица 1.1 Логические операции
Словами эти правила можно выразить так: · отрицание меняет значение истинности; · конъюнкция истинна, только если оба операнда истинны; · дизъюнкция ложна, только если оба операнда ложны; · исключающее ИЛИ истинно для различных операндов. Кроме перечисленных четырех логических операций есть еще две логические операции сокращенного вычисления: · сокращенная конъюнкция (conditional-AND) &&; · сокращенная дизъюнкция (conditional-OR) ||. Удвоенные знаки амперсанда и вертикальной черты следует записывать без пробелов. Правый операнд сокращенных операций вычисляется только в том случае, если от него зависит результат операции, т. е. если левый операнд конъюнкции имеет значение true или левый операнд дизъюнкции имеет значение false. Можно записывать выражения, не опасаясь деления на нуль: (n != 0) && (m/n > 0.001) или (n == 0) || (m/n > 0.001) Примеры определения переменных целых типов: byte b1 = 50, b2 = -99, bЗ; short det = 0, ind = 1; int i = -100, j = 100, k = 9999; long big = 50, veryBig = 2147483648L; char c1 = 'A', c2 = '?', newLine = '\n'; Операции над целыми типами Все целочисленные операции, можно разделить на группы. Арифметические операции К арифметическим операциям относятся: · сложение + (плюс); · вычитание - (дефис); · умножение *(звездочка); · деление /(наклонная черта — слэш); · взятие остатка от деления (деление по модулю) % (процент); · инкремент (увеличение на единицу) ++; · декремент (уменьшение на единицу) --. Между сдвоенными плюсами и минусами нельзя оставлять пробелы. Сложение, вычитание и умножение целых значений выполняются как обычно, а вот деление целых значений в результате дает опять целое (так называемое "целое деление"), например, 5/2 даст в результате 2, а не 2.5 , а 5/(-3) даст -1. Дробная часть числа попросту отбрасывается, происходит усечение частного, т.к. в Java принято целочисленное деление. Это странное для математики правило естественно для программирования: если оба операнда имеют один и тот же тип, то и результат имеет тот же тип. Достаточно написать 5/2.0 или 5.0/2 или 5.0/2.0 и получим 2.5 как результат деления вещественных чисел. Операция деление по модулю определяется так: а % b = а - (а / b) * b Например, 5%2 даст в результате 1 , а 5% (-3) даст, 2 , т.к. 5 = (-3)*(-1) + 2 , но (-5)%3 даст -2 , поскольку -5 = 3 * (-1) - 2. Операции инкремент и декремент означают увеличение или уменьшение значения переменной на единицу и применяются только к переменным, но не к константам или выражениям, нельзя написать 5++ или (а + b)++ . Например, после приведенных выше описаний i++ даст -99 , a j -- даст 99. Операции можно записать и перед переменной: ++i , — j. Разница проявится только в выражениях: при первой формe записи (постфиксной) в выражении участвует старое значение переменной и только потом происходит увеличение или уменьшение ее значения. При второй форме записи (префиксной) сначала изменится переменная, и ее новое значение будет участвовать в выражении.
Результат арифметической операции имеет тип int, кроме того случая, когда один из операндов типа long . В этом случае результат будет типа long. Перед выполнением арифметической операции всегда происходит повышение (promotion) типов byte , short , char . Они преобразуются в тип int, а может быть, и в тип long , если другой операнд типа long. Операнд типа int повышается до типа long , если другой операнд типа long. Конечно, числовое значение операнда при этом не меняется. Преобразования
|