ЖИЗНЕННЫЙ ЦИКЛ ОБЪЕКТА

ЖИЗНЕННЫЙ ЦИКЛ ОБЪЕКТА. Объекты создаются с помощью оператора new. Инициализация объекта производится с помощью соответствующего конструктора.

Эти операции разделить нельзя - за new всегда следует конструктор. Пример Point myPoint new Point Других способов создания объектов кроме оператора new язык Java не предоставляет. Объект существует до тех пор, пока на него есть ссылки то есть пока он прямо или косвенно доступен хотя бы из одной переменной. В языке отсутствуют явные средства удаления объектов. После того, как объект стал недоступен, он оказывается кандидатом для утилизации сборщиком мусора.

Point p new Point 100.0, 100.0 p new Point 1.0, 1.0 На точку с координатами 100, 100 ссылок больше нет String s new String Local string System.out.println s На строку Local string ссылок больше нет Объект может стать недоступным, если хранившей его переменной присвоено новое значение или если эта переменная перестала быть доступной произошел выход из блока. Пример приведен выше. В момент утилизации объекта сборщиком мусора будет вызван метод finalize. Из-за того, что сборщик мусора работает в фоновом режиме, вызов finalize является асинхронным.

Базовые типы данных. В языке Java определено восемь базовых типов данных. Для каждого базового типа данных отводится конкретный размер памяти. Этот размер не зависит от платформы, на которой выполняется приложение Java Тип данных Размер занимаемой области памяти Значение по умолчанию boolean 8 false byte 8 0 char 16 x0 short 16 0 int 32 0 long 64 0 float 32 0.0F double 64 0.0D Фактически размеры памяти, отведенные для хранения переменной, могут отличаться от приведенных выше, например, для хранения переменной типа short может быть зарезервировано слово размером 32 бита. Однако язык Java сделан таким образом, что это никак не повлияет на мобильность приложения.

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

Можно также инициализировать переменные базовых типов в программе или при их определении, как это показано ниже int nCounter 0 int i i 8 Переменные типа boolean могут находиться только в двух состояниях - true и false, причем эти состояния никаким образом нельзя соотнести с целыми значениями. Вы не можете, как это было в языке С, выполнить преобразование типа boolean, например, к типу int - компилятор выдаст сообщение об ошибке.

Переменная типа byte занимает восемь бит памяти и про нее больше нечего сказать. Что же касается типа char, то он используется для хранения символов в кодировке UNICODE. Эта кодировка позволяет хранить национальные наборы символов, что очень удобно для интернациональных приложений, предназначенных для работы в Internet. Переменные типа byte, short, int и long являются знаковыми. В языке Java нет беззнаковых переменных, как это было в языке С. Приложение Java может оперировать числами в формате с плавающей точкой, определенным в спецификации IEEE 754. Тип float позволяет хранить числа с одинарной точностью, а формат double - с двойной.

Переменные базовых типов могут передаваться функциям в качестве параметров только по значению, но не по ссылке. Поэтому следующий фрагмент кода работать не будет int x void ChangeX int x x 5 x 0 ChangeX x После вызова функции ChangeX содержимое переменной x останется равным нулю. Проблему можно решить, если вместо базовых переменных использовать объекты встроенных классов, соответствующие базовым переменным.