Ильдар Хабибуллин - Java 7 [Наиболее полное руководство]

Здесь есть возможность читать онлайн «Ильдар Хабибуллин - Java 7 [Наиболее полное руководство]» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 2012, ISBN: 2012, Издательство: БХВ-Петербург, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Java 7 [Наиболее полное руководство]: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Java 7 [Наиболее полное руководство]»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Java 7 [Наиболее полное руководство] — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Java 7 [Наиболее полное руководство]», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Листинг 2.6. Видимость и инициализация переменных

class ManyVariables{

static int x = 9, y; // Статические переменные — поля класса.

// Они известны во всех методах и блоках класса. // Поле y получает значение 0.

static{ // Блок инициализации статических переменных.

// Выполняется один раз при первой загрузке класса // после инициализаций в объявлениях переменных. x = 99; // Этот оператор выполняется в блоке вне всякого метода!

int a = 1, p; // Нестатические переменные — поля экземпляра.

// Известны во всех методах и блоках класса,

// в которых они не перекрыты другими переменными // с тем же именем.

// Поле p получает значение 0.

{ // Блок инициализации экземпляра.

// Выполняется при создании каждого экземпляра // после инициализаций при объявлениях переменных. p = 999; // Этот оператор выполняется в блоке вне всякого метода!

}

static void f(int b){ // Параметр метода b — локальная переменная,

// известная только внутри метода. int a = 2; // Это вторая переменная с тем же именем "a".

// Она известна только внутри метода f()

// и здесь перекрывает первую "a".

int c; // Локальная переменная, известна только в методе f().

// Не получает никакого начального значения // и должна быть определена перед применением.

{ int c = 555; // Сшибка! Попытка повторного объявления.

int x = 333; // Локальная переменная, известна только в этом блоке.

}

// Здесь переменная x уже неизвестна. for (int d = 0; d < 10; d++){

// Переменная цикла d известна только в цикле. int a = 4; // Ошибка!

int e = 5; // Локальная переменная, известна только в цикле for.

e++; // Инициализируется при каждом выполнении цикла.

System.out.println("e = " + e); // Выводится всегда "e = 6".

}

// Здесь переменные d и e неизвестны.

}

public static void main(string[] args){

int a = 9999; // Локальная переменная, известна только внутри

// метода main().

f (a) ;

}

}

Обратите внимание на то, что переменные класса и экземпляра неявно присваивают нулевые значения. Символы неявно получают значение ’ \u0000 ’, логические переменные — значение false, ссылки получают неявно значение null.

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

Внимание!

Поля класса при объявлении обнуляются, локальные переменные автоматически не инициализируются.

В листинге 2.6 появилась еще одна новая конструкция: блок инициализации экземпляра (instance initialization). Это просто блок операторов в фигурных скобках, но записывается он вне всякого метода, прямо в теле класса. Этот блок выполняется при создании каждого экземпляра, после static-блоков и инициализации при объявлении переменных, но до выполнения конструктора. Он играет такую же роль, как и static-блок для статических переменных. Зачем же он нужен, ведь все его содержимое можно написать в начале конструктора? Он применяется в тех случаях, когда конструктор написать нельзя, а именно в безымянных внутренних классах.

Вложенные классы

В этой главе уже несколько раз упоминалось, что в теле класса можно сделать описание другого, вложенного (nested) класса. А во вложенном классе можно снова описать вложенный, внутренний (inner) класс и т. д. Эта "матрешка" кажется вполне естественной, но вы уже поднаторели в написании классов, и у вас возникает масса вопросов.

□ Можем ли мы из вложенного класса обратиться к членам внешнего класса? Можем, для того это все и задумывалось.

□ А можем ли мы в таком случае определить экземпляр вложенного класса, не определяя экземпляры внешнего класса? Нет, не можем, сначала надо определить хоть один экземпляр внешнего класса, матрешка ведь!

□ А если экземпляров внешнего класса несколько, как узнать, с каким экземпляром внешнего класса работает данный экземпляр вложенного класса? Имя экземпляра вложенного класса уточняется именем связанного с ним экземпляра внешнего класса. Более того, при создании вложенного экземпляра операция new тоже уточняется именем внешнего экземпляра.

□ А?..

Хватит вопросов, давайте разберем все по порядку.

Все вложенные классы можно разделить на вложенные классы-члены класса (member classes), описанные вне методов, и вложенные локальные классы (local classes), описанные внутри методов и/или блоков. Локальные классы, как и все локальные переменные, не являются членами класса.

Классы-члены могут быть объявлены статическими с помощью модификатора static. Поведение статических классов-членов ничем не отличается от поведения обычных классов, отличается только обращение к таким классам. Поэтому они называются вложенными классами верхнего уровня (nested top-level classes), хотя статические классы-члены можно вкладывать друг в друга. В них можно объявлять статические члены. Используются они обычно для того, чтобы сгруппировать вспомогательные классы вместе с основным классом.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Java 7 [Наиболее полное руководство]»

Представляем Вашему вниманию похожие книги на «Java 7 [Наиболее полное руководство]» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Java 7 [Наиболее полное руководство]»

Обсуждение, отзывы о книге «Java 7 [Наиболее полное руководство]» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x