Скачиваний:
185
Добавлен:
05.07.2021
Размер:
16.53 Mб
Скачать

7. Переменные. Объявление переменной. Преобразование и приведение типов. Автоматическое приведение и продвижение типов в выражениях. Логические выражения. Область и срок действия переменной.

ПЕРЕМЕННЫЕ Переменная служит основной единицей хранения данных в программе нa Java. Переменная определяется в виде сочетания идентификатора, типа и необязательного начального значения.

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ В Java все переменные должны быть объявлены до их использования. Основная форма объявления переменных выглядит следующим образом: тип идентификатор [=значение]; где парамер тип обозначает один из примитивных типов данных в Java, имя класса или интерфейса. Любой переменной можно присвоить начальное значение (инициализировать ее) через знак равенста. Следует, однако, иметь в виду, что инициализирующее выражение должно возвращать значение того же самого (или совместимого) типа, что и у переменной. Для объявления нескольких переменных указанного типа можно воспользоватья списком, разделяемым запятыми.

ПРЕОБРАЗОВАНИЕ И ПРИВЕДЕНИЕ ТИПОВ. Переменной одного типа нередко приходится присваивать значение другого типа. Если оба типа совместимы, то их преобразование в Java будет выполнено автоматически. Например, значение типа int всегда можно присвоить переменной типа long. Но не все типы данных совместимы, а, следовательно, не все преобразования типов разрешены неявно. Например, не существует какого-то определенного автоматического преобразования типа double в тип byte. Правда, преобразования между несовместимыми типами выполнять все-таки можно. Для этой цели служит приведение типов, при котором выполняется явное преобразование несовместимых типов.

АВТОМАТИЧЕСКОЕ ПРЕОБРАЗОВАНИЕ ТИПОВ В JAVA Когда данные одного типа присваиваются переменной другого типа, выполняется автоматическое преобразование типов, если удовлетворяются два условия: • оба типа совместимы; • длина целевого типа больше длины исходного типа. При соблюдении этих условий выполняется расширяющее преобразование. Например, тип данных int всегда достаточно велик, чтобы хранить все допустимые значения типа byte, поэтому никакие операторы явного приведения типов в данном случае не требуются. С точки зрения расширяющего преобразования числовые типы данных, в том числе целочисленные и с плавающей точкой, совместимы друг с другом. В то же время не существует автоматических преобразований числовых типов в тип char или boolean. Типы char и boolean не совместимы друг с другом.

АВТОМАТИЧЕСКОЕ ПРОДВИЖЕНИЕ ТИПОВ В ВЫРАЖЕНИЯХ Помимо операций присваивания, определенное преобразование типов может выполняться и в выражениях. Это может происходить в тех случаях, когда требующаяся точность промежуточного значения выходит за пределы допустимого диапазона значений любого из операндов в выражении.

ПРАВИЛА ПРОДВИЖЕНИЯ ТИПОВ В языке Java определен ряд правил продвижения типов, применяемых к выражениям. Сначала все значения типа byte, short и char продвигаются к типу int. Затем тип всего выражения продвигается к типу long, если один из его операндов относится к типу long. Если же один из операндов относится к типу float, то тип всего выражения продвигается к типу float. А если любой из операндов относится к типу double, то и результат вычисления всего выражения относится к типу double.

ОБЛАСТЬ И СРОК ДЕЙСТВИЯ ПЕРЕМЕННЫХ В Java допускается объявление переменных в любом блоке кода. Блок кода заключается в фигурные скобки, задавая тем самым область действия. Таким образом, при открытии каждого нового блока кода создается новая область действия. Область действия определяет, какие именно объекты доступны для других частей программы. Она определяет также продолжительность существования этих объектов. Две основные области действия в Java определяются классом и методом. Но такое разделение имеет определенный смысл, поскольку область действия класса обладает рядом характерных особенностей и свойств, не распространяющихся на область действия метода. Область действия, определяемая методом, начинается с его открывающей фигурной скобки. Но если у метода имеются параметры, то они также включаются в область действия метода. Как правило, переменные, объявленные в области действия, не доступны из кода за пределами этой области. Таким образом, объявление переменной в области действия обеспечивает ее локальность и защиту от несанкционированного доступа или внешних изменений. Области действия могут быть вложенными. Так, вместе с каждым блоком кода, по существу, создается новая, вложенная область действия. В таком случае внешняя область действия включает в себя внутреннюю область. Это означает, что объекты, объявленные во внешней области действия, будут доступны для кода из внутренней области действия, но не наоборот. Объекты, объявленные во внутренней области действия, будут недостны за ее пределами.

Следует иметь в виду еще одну важную особенность: переменные создаются при входе в их область действия и уничтожаются при выходе из нее. Это означает, что переменная утратит свое значение сразу же после выхода из ее области действия

В логическом выражении могут использоваться следующие логические операторы: ==, !=,<=,>=,>,<, &&,||,! .

Отличие == и equals

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