Отправляет email-рассылки с помощью сервиса Sendsay

Программирование в среде Java

  Все выпуски  

Программирование в среде Java


Служба Рассылок Subscribe.Ru проекта Citycat.Ru
                          Управляющие структуры
                             (продолжение).

  Маленькое уточнение к предыдущему выпуску рассылки:
   Дело в том, что числовые константы определяемые в Java, имеют
  тип. Так, целые числа (101) имеют тип int, целые числа, имеющие тип long
  оканчиваются большой буквой L (1000001L), тип float-буквой f (0.1f),
  тип double-буквой d (0.00001d). Т.о. надо писать "long l=10001L;" вместо
  "long l=10001;" однако, как я уже упоминал выше, в Java есть неявное
  преобразование типов, которое как раз используется компилятором в этом
  случае. Необходимость использовать "L" возникает лишь в случае, когда
  вы вручную хотите задать константу, невмещающуюся в int.
   Стандарт, определяющий вещественные константы и действия над ними
  называется IEEE 754.

   Итак, теперь мы знаем, что программы на Java-это описания классов.
  Классы определяют данные и методы. С данными как будто-бы разобрались.
  Как же можно в классе описать тело метода? Чисто интуитивно, тело
  метода можно понимать как набор управляющих директив Java-машине
  (поток управления), перемешанный с объявлениями переменных метода.
  Метод определяет зону видимости.
   Что такое зона видимости? Зона видимости-это набор идентификаторов
  (собственная часть и внешняя, при совпадающих именах собственные
  идентификаторы перекрывают внешние). Зона видимости определяется
  блоком заключенным в фигурные скобки. Т.о. мы уже столкнулись с двумя
  зонами видимости. Одну мы определили при объявлении класса, а вторую-
  при объявлении метода. Зона видимости метода и вложенные в нее зоны
  видимости называются локальными зонами видимости, в локальных зонах
  видимости могут быть объявлены только переменные, они называются
  локальными переменными. Объявление локальных переменных ничем не
  отличается от объявления переменных класса за исключением двух пунктов:
   a) к ним неприменим аттрибут static
   b) при обращении к локальным переменным, необходимо либо чтобы
      им было что-то предварительно присвоено либо чтобы они были
      проинициализированы при объявлении (а компилятор за этим проследит);

           class test {
                 public static void main(String argv[]) {
                        int a, b, c;
                        a = 1;
                        c = a + b;
                        System.out.println(c);
                 }
           }
           /home/andrei/>javac test.java
           test.java:5: variable b might not have been initialized
           c = a + b;
                   ^
           1 error

           В то же время как код
           class test {
                 int a, b, c;

                 public void show() {
                        a = 1;
                        c = a + b;
                        System.out.println(c);
                 }
           }
           является вполне рабочим. За замечание b) и пример спасибо
           Виталию Бердинских. В первом примере, переменные a,b и c
           объявлены локальными в зоне видимости метода main, в то же
           время, как во втором, переменные a,b и c принадлежат зоне
           видимости класса и инициализируются автоматически. Заметьте,
           что если в последнем примере в методе show объявить переменную
           b, то возникнет ошибка примера один, т.к. в зоне видимости метода
           переменная b экземпляра класса будет перекрыта переменной b
           метода.


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное