Главная » Java » Переменные Java

0

 

в следующем примере на экран выводится часть бесконечной последовательности чисел Фибоначчи, начало которой выглядит так:

1

1

2

3

5

8

13

21

34

 

 

 

 

Последовательность чисел Фибоначчи начинается с двух единиц, и каждое последующее число представляет собою сумму двух предыдущих. Программа отображения чисел Фибоначчи на экране довольно проста, но привлекательна тем, что позволяет продемонстрировать приемы использования переменных (variables), организации циклов (loops) и выполнения основных арифметических Операций. Ниже приведен текст программы.

 

class Fibonacci {

                        /** Вывод на экран последовательности

                         * чисел Фибоначчи, меньших 50 */

                         

                        public static void main(String[] args){

                                   int lo = 1;

                                   int hi = 1;

                                   System.out.println(lo);

                                   while(hi<50){

                                               System.out.println(hi);

                                              

hi = lo + hi;       // новое значение hi

                        lo = hi – lo;        /* новое значение lo

                                                * равное старому значению hi */

                        }

            }

}

 

В примере объявляется класс Fibonacci, который, подобно HelloWorld, содержит метод main. Две первые строки main – это выражения объявления локальных (local) переменных, lo и hi. Переменная hi предназначена для хранения последнего найденного числа последовательности, а 1 о – предыдущего. Локальные переменные объявляются внутри блока кода, такого как тело метода, I! отличие от полей, которые входят в набор членов класса. Объявление каждой переменной должно быть снабжено описанием ее типа, которое располагают непосредственно перед идентификатором переменной. Так, переменные lo и hi относятся к типу int, предназначенному для хранения целых 32-битовых знаковых чисел из интервала от -2?? до 2?? -1.

Язык программирования Java поддерживает встроенные «простые» типы данных, позволяющие хранить целые и булевы значения, числа с плавающей запятой и символы. Простые типы естественны и легки для понимания, чего I! общем случае не скажешь об "объектных" типах, определяемых программистом. Тип любой переменной программы должен быть задан явно. Ниже приведено краткое описание простых типов Java.

 

  Наименование типа                                       Допустимые значения____________________

 

boolean                                                                      true или false

char                                                                                      16-битовый символ стандарта Unicode 2.1

byte                                                                                       8-битовое целое число со знаком

short                                                                                     16-битовое целое число со знаком

int                                                                                          32-битовое целое число со знаком

long                                                                                      64-битовое целое число со знаком

float                                                                                                      32-битовое число с плавающей запятой,                       соответствующее спецификации IEEE 754-1985

  double                                                                                                  64-битовое число с плавающей запятой,                        соответствующее спецификации IEEE 754-1985

__________________________________________________________________________________________

 

В программе Fibonacci переменные hi и lo объявлены с одновременной инициализацией их значением 1. При объявлении переменной ее исходное значение задается посредством выражения инициализации и оператора =. Оператор = (называемый еще оператором присваивания) сохраняет в переменной, расположенной в левой части конструкции, результат вычисления выражения из правой части.

Локальные переменные после объявления остаются в неопределенном состоянии до момента их инициализации. Вы вовсе не обязаны всегда инициализировать локальные переменные непосредственно при их объявлении, но если попытаться использовать переменную, которой исходное значение еще не присваивалось, компилятор укажет на ошибку.

Поскольку обе переменные, lo и hi, относятся к одному типу, int, мы могли бы воспользоваться краткой формой их объявления. Допустимо объявлять несколько переменных одного типа, разделяя их идентификаторы (с выражениями инициализации, если таковые имеются) символом запятой. Две начальные строки тела метода main можно заменить одной, равнозначной:

     int lo = 1, hi = 1;

Более удобочитаемая форма выглядит так:

int   lo = 1,

           hi = 1;

 

обратите внимание на то, что наличие в приведенном тексте символов перехода

на новую строку не изменяет смысла выражения – любые символы пробела (т.е. собственно пробелы, признаки табуляции и переход а на новую строку) используются только для удобства программиста и читателя.

Конструкция while в нашем примере демонстрирует один из способов организа

ции циклических вычислений. Значение аргумента while(логического выражения hi < 50) проверяется – если утверждение истинно (true), выполняется тело цикла, после чего выражение вновь подвергается проверке. Процесс повторяется до тех пор, пока проверка не выявит значения ложь (false). Вообще говоря, возможны случаи, когда логическое выражение whilе никогда не принимает значения "ложь", _ такой цикл способен выполняться бесконечно, если не будет принудительно прерван командой break либо возникшей исключительной ситуацией.

Тело цикла whilе остоит из единственного выражения. В этом качестве может выступать простое выражение (скажем, вызов не которого метода), вложенная управляющая структура либо блок (block) – последовательность (возможно,

пустая) выражений, заключенная в фигурные скобки.

Аргументом whilе служит логическое булево выражение, которое может прини-

мать одно из двух предопределенных значений – true (истина) или false (ложь). Булевы выражения обычно формируют с помощью операторов сравнения – < (меньше), <= (меньше или равно, или не больше), > (больше), >= (больше или равно, или не меньше), == (равно) и 1= (не равно). Булево выражение hi < 50 в рассматриваемом нами примере обозначает следующее условие: действительно ли текущее значение переменной hi меньше числа 50. Если условие истинно, выполняется тело Цикла, в котором предусмотрены вывод на экран текущего числа Фибоначчи и вычисление следующего. Если же переменная hi приобретает значение, большее или равное 50, управление передается на первую строку кода, следующую за телом цикла whilе,  в данном случае, это скобка, обозначающая конец объявления метода main, так что наша программа попросту завершает работу.

Чтобы вычислить очередное число последовательности Фибоначчи, мы выполняем несколько простых арифметических операций и, как легко видеть, вновь применяем оператор присваивания (=), сохраняющий значение из правой части выражения в переменной, расположенной в левой его части. Как вы легко догадались, оператор + (плюс) вычисляет сумму своих аргументов (операндов), а оператор – (минус) - их разность. В языке Java предусмотрено множество арифметических операторов, применяемых по отношению к целым и вещественным числовым типам. Наиболее потребительны операторы сложения (+), вычитания (-), умножения (~) и деления (/), а некоторые другие будут рассмотрены позже.

Обратите внимание, что в примере программы Fibonacci; методу println передается числовой аргумент, в то время как ранее, в тексте HelloWor1d, нами использовался строковый. ргintln  это характерный пример одной из многочисленных групп перегруженных методов, которые способны воспринимать аргументы различных типов. Исполняющая система Java, анализирующая типы передаваемых аргументов и их количество, самостоятельно определяет, к какому из Одноименных методов в конкретной ситуации следует обратиться. Возможность использования перегруженных методов – весьма мощный инструмент языка.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии