Выпуск 4 - Операторы и присвоения (часть 1)Здравствуйте, дорогие читатели! Ответы на тест в предыдущем выпуске
Операторы и присвоения" (Operators and assignments)Операторы в Java используются для разнообразных операций (всех
необходимых). Все Java операторы перечислены в Таблице 2.1:
2.1. Порядок вычисленияВ Java, в отличие от многих других языков, явный порядок вычисления
зафиксирован. Результат любого выражения считается слева
направо. Рассмотрим фрагмент кода: Рекомендуется использовать простые выражения и скобки, чтобы улучшить читаемость кода. Код, сгенерированый компилятром, будет тем же самым, несмотря на скобки. 2.2. Унарные операторыБольшинство оперторов имеют два операнда. Например, когда мы производим умножение, то делаем это с двумя числами. Однако, унарные операторы применяются только к одному операнду. В Java представлены семь унарных операторов:
Строго говоря, приведение типа - это не оператор. Но мы его обсуждаем именно в таком ключе, потому что к нему применяются все тезисы нашего дальнейшего обсуждения. Инкремент (увеличение значения на 1) и декремент (уменьшение значения на 1): ++ и --Эти операторы изменяют значение выражения добавлением или вычитанием 1. Например, если переменная x типа int равна 10, то ++x (--x) равно 11 (соответственно, 9). Результат записывается в x. В предыдущих примерах операторы находились перед переменной. Они могут находиться и после неё. И ++x, и x++ дают один и тот же результат, сохраняемый в x. Но значение всего выражения отличается. Например, если y = x++, то значение y равно исходному значению x. Если же y = ++x, то значение y на единицу больше, чем исходное значение x. В обоих случаях значение x увеличивается на 1. Если инкремент (декремент) расположен слева от выражения, то выражение модифицируется перед тем (после того), как оно начинает участвовать в остальном вычислении. Это называется пре-инкремент (пре-декремент). Соответсвенно, если оператор находится справа от выражения, то в остальном вычислении участвует исходное значение этого выражения. И инкремент (декремент) происходит после того, как вычисление всего выражения завершено. Таблица 2.2. показывает значения x и y после применения инкремента и декремента справа и
слева.
Унарный плюс и минус: + и -Унарные операторы + и - отличаются от обычных бинарных операторов + и
-, которые трактуются, как сложение и вычитание. Унарный + не имеет
никакого эфекта, кроме подчёркивания положительной природы численного
литерала. Унарный - отрицает выражение (было положительным - стало
отрицательным, было отрицательным - стало положительным). Примеры: Поразрядное инвертирование: ~Каждый примитивный тип Java представляется в виртуальной машине так, что представление не зависит от платформы. Это означает, что битовый шаблон, используемый для представления некоего отдельного числа, будет всегда тем же самым. Таким образом и манипулирование битами - процесс более эффективный, в силу независимости от платформы. Поразрядное инвертирование означает, что в двоичном представлении числа 0 заменяется на 1, а 1 - на 0. Например, применение этого оператора к байту с содержимым 00001111 даст 11110000. Логическое дополнение: !Оператор ! инвертирует логическое значение выражения. Например, !true = false. Этот оператор часто используется в
тестовой части if () конструкции. Эффект этого -
изменение значения логического выражения. То есть обработчики if () и else могут быть легко
обменяться местами. Рассмотрим два эквивалентных фрагмента кода: Приведение типа: ( )Приведение типа используется для явной конвертации выражения в заданный тип. Операция возможна только для допустимых типов. И во время компиляции, и во время выполнения программы, приведение типа проверяется на корректность. И этот аспект будет описан в дальнейших выпусках рассылки. Приведение типа применяется для изменения типа значений примитивного
типа. Например, мы можем форсировать конвертацию double к int как, например, в
следующем фрагменте: Присвоение типа может быть применено и к объектным (непримитивным)
типам. Это типично, например, для случаев, когда используются контейнеры
типа Vector. Если вы помещаете объект типа String в Vector, то когда вы его извлекаете, тип, возвращаемый методом elementAt(), будет Object. Для
использования извлечённого объекта как String
нужно применить приведение типа, как, например, в следующем фрагменте
кода: В данном примере приведение типа имеет место в третьей строке (конструкция (String)). И хотя компилятор допускает такое приведение типа, во время выполнения программы всё равно проверяется, является объект извлечённый из Vector на самом деле объектом типа String. В будущих выпусках рассылки я расскажу о допустимых приведениях типов. Дорогие читатели! Если у вас возникают вопросы по тексту рассылки, я с удовольствием на них отвечу. Мой почтовый адрес идёт последней строкой в данном выпуске (at означает @). Кроме того, присылайте мне интересующие вас темы, которые я могла бы осветить в рассылке, делитесь опытом или просто комментируйте. Я также буду рада и благодарна вам, если вы проголосуете за этот выпуск. Форма голосования находится внизу выпуска. Всего доброго, Внимание! По вопросам партнёрства обращаться на е-майл natalia.macheda at gmail.com N Наталия Македа 2008 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||