Устанавливается {} и ограничивает видимость переменной и время ее жизни.
{
int x = 12; // доступно x
{
int q = 96; // доступно x и q
int x = 98; // для локальных переменных-ошибка
}
// доступно x, q – за пределами видимости
}
Область действия объектов
{
String s = new String (“abcd”);
} //Ссылка s исчезла
.
Объект String еще существует, но уже не доступен, т.к. на него уже не указывает никакая ссылка.
Работает программа gabage collector, она уничтожает объекты, на которые нет ссылок. Еe можно и вызвать: System. gc();
Создание новых типов данных
Описание нового типа (класса) (или определение)
class ATypeName { / *тело класса/*}
Теперь можно создать объект этого типа – объявление и создание объекта а
ATypeName a = new ATypeName ();
Поля и методы
Класс содержит следующие элементы (member – члены класса):
- поля (переменные) – (fields);
- методы (функции)- (methods).
Полем может быть:
- ссылка на объект;
- примитив.
Для каждого объекта отдельно от других объектов в своем блоке памяти хранятся поля.
Для каждого класса создается общий блок памяти один на все объекты этого класса для хранения методов и статических переменных.
|
|
Пример класса с полями:
class DataOnly {
int 1;
double d;
boolean b;
}
Объект этого класса:
DataOnly data = new DataOnly ();
Для присваивания значений -синтаксис ссылка.поле
data.i = 47;
data.d = 1.1;
data.b = false;
Объект может содержать ссылки на другие объекты:
myPlane.leftTank.capacity = 100;
Значения по умолчанию для полей примитивных типов
Поля примитивных типов по умолчанию инициализируются нулями.
boolean | false |
char | ‘/u0000’ |
byte | (byte) 0 |
short | (short) 0 |
int | |
long | 0L |
float | 0.0f |
double | 0.0 |
Поля -ссылки инициализируются значением null.
Локальные переменные при создании хранят случайные значения.
f() { int x; } – x-локальная переменная, в ней -мусор.
Методы, аргументы и возвращаемые значения
Вызов метода – сообщение, принимаемое объектом. Синтаксис:
Возвращаемый тип имя Метода (список аргументов) -это сигнатура метода
{
// тело метода
}
Методы могут быть только частями класса. Вне классов (как в С++) методов быть не может.
Метод вызывается для объекта:
имя Объекта. имя Метода (арг1, арг2…)
Например:
int x = a.f(5); // посылка сообщения объекту а
Список аргументов
В списке аргументов: типы предаваемых объектов и их имена (ссылки). Внутри класса -определение метода.
int storage (String s)
{
return s.length () *2;
}
return означает: 1) выйти из метода
2) возвратить результат.
s.length (): вызывается метод length() объекта s. Возвращает количество символов в строке.
Примеры:
boolean flag() {return true;}
float naturalLogBase () {return 2.718;}
void nothing () {return;}
void nothing2 () {}