- •Java - объектно-ориентированный язык
- •Виртуальная Java-машина.
- •Алфавит языка Java
- •Типы данных
- •Числа высокой точности
- •Переменные в Java
- •Объявление переменной
- •Область действия и время жизни переменной
- •Операции в Java
- •Арифметические операции
- •Логические операции
- •Побитовые операции
- •Операции сдвига
- •Тернарный оператор ?:
- •Оператор запятая
- •Одномерные массивы
- •Многомерные массивы
- •Функции
- •Класс Поля и методы
- •Модификаторы доступа
- •Инициализация и очистка
- •Перегрузка методов
- •Ключевое слово this
- •Вызов конструктора из конструктора
- •Использование объектов в качестве параметров
- •Ключевое слово static
- •Спецификатор final
- •Вложенные и внутренние классы
- •Сборщик «мусора»
- •Как работает сборщик мусора
- •Наследование
- •Основы наследования
- •Использование ключевого слова super
- •Использование super для вызова конструктора суперкласса
- •Использование super для доступа к скрытым членам суперкласса
- •Конструкторы при наследовании
- •Динамическая диспетчеризация методов
- •Абстрактные классы
- •Использование final с наследованием
- •Использование final для отказа от переопределения
- •Использование final для отмены наследования
- •Класс Object
- •Пакеты и интерфейсы Пакеты
- •Оператор package
- •Оператор import
- •Уровни доступа.
- •Интерфейсы
- •Оператор implements
- •Частичные реализации
- •“Множественное” наследование в Java
- •Конфликты имен при комбинировании интерфейсов
- •Расширение интерфейса
- •Группировка констант
- •Инициализирование полей в интерфейсах
- •Вложенные интерфейсы
- •Стандартный ввод/вывод
- •Чтение из стандартного ввода
- •Замена System.Out на PrintWriter
- •Первое приложение Java
- •Исключительные ситуации. Обработка исключений
- •Типы исключений
Алфавит языка Java
Алфавит языка составляют буквы, цифры и специальные символы. Java является регистро-зависимым языком. Алфавит включает латинские буквы, цифры (0-9), символ «_», знак $.
Цифры языка включают ASCII -цифры 0-9(\u0030-\u0039).
Идентификаторы. Идентификатор - это последовательность неограниченной длины букв и цифр, начинается с буквы и должен быть отличен от ключевого слова, логического литерала или null-литерала.
Буквы и цифры языка взяты из полного набора Unicode-символов. Это позволяет программистам использовать в своих программах идентификаторы, которые пишутся на их родных языках.
Комментарии. Как и в С (С++) используются для пояснения кода и игнорируются компилятором. В Java имеется три вида комментариев:
/* текст */ - весь текст от ASCII -символов /* до ASCII -символов */,
// текст - однострочный комментарий,
/** документация */ - комментарий документация может быть обработан отдельной программой (javadoc), автоматически формирующей документацию. Комментарии не могут быть вложенными.
Ключевые слова. Следующие последовательности символов, сформированные из ASCII -букв, являются ключевыми словами и не могут использоваться как идентификаторы
abstract default if private throw boolean
implements protected throws break double impo
public transient byte else instanceof return
case extends int short void catch
final interface static volatile char finally
long super while class float native
switch const for new synchronized continue
goto package this try do
Типы данных
В языке 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 нет указателей, вы не можете адресоваться к элементам массива чисел по относительному смещению этих элементов в оперативной памяти. Следовательно, точный размер элемента в данном случае не играет никакой роли.
Переменные простых типов инициализируются либо по умолчанию, либо явно. Однако участвовать в вычислениях могут только явно инициализированные переменные.
byte n =2;
float f;
int i; // инициализация 0 по умолчанию
. . .
f=(float)i/n; // ошибка, переменная i не инициализирована явно
i = 7;
f=(float)i/n; // верно
Переменные типа boolean могут принимать только два значения − true и false, не соотносимые с целыми значениями. Нельзя, выполнить преобразование типа boolean, например, к типу int.
В языке Java все целочисленные простые типы данных (byte, short, int и long) являются знаковыми.
Приложение Java может оперировать данными в формате с плавающей точкой, используемыми для хранения чисел с одинарной точностью (float), и с двойной (double).
Простые типы данных также имеют классы «оболочки» − встроенные замещающие классы, которые могут использоваться для создания объектов на основе этих типов. Например, вместо типа int использовать класс Integer, вместо типа long − класс Long и так далее.
Инициализации этих объектов должна выполняться с помощью конструктора, например:
int val = 5;
Integer Val; // создание неинициализированной ссылки
Val=new Integer(val); // инициализация ссылки
или
Integer Val=new Integer(5); // создание и инициализация ссылки
При этом не может использоваться конструктор без параметра.
После выполнения оператора присваивания ссылка Val будет ссылаться на реальный объект класса Integer и ее можно использовать. Пытка же использовать неинициализированную ссылку приводит к исключению.
Имя объекта Val типа Integer можно передавать функциям в качестве параметра, причем это будет ссылкой на объект.
Одна из существенных особенностей языка Java, состоит в том, что в языке Java нет указателей. Использование указателей в других языках часто приводит к появлению трудно обнаруживаемых ошибок. Поэтому разработчики Java решили отказаться от использования указателей совсем.
Фрагмент программы, написанный с использованием указателей на переменные простых типов, приведет к ошибке, так как переменные простых типов передаются по значению, а не по ссылке:
int val; // некоторая переменная
void ChangeVal(int *pVal, int nVal)
{
*pVal=nVal;
}
. . .
ChangeVal(&val, 5); // вызов функции
Язык Java позволяет использовать вместо указателей ссылки на объекты. Пользуясь этими ссылками, можно адресовать объекты по их имени, вызывая методы и изменяя значения данных объектов.