Назад | Содержание | Вперед

Lecture Syntax


 

Java является языком свободной формы, т.е. нет необходимости следовать каким-либо правилам структурированного расположения текста.

 

 



В стандарте языка Java имеются три типа комментариев:

/*Comment*/;

//Comment;

/** Comment*/

Первые два полностью аналогичны С++. Третий тип называется документационный комментарий и введен в Java для автоматического документирования кода. После написания исходного текста утилита автоматической генерации документации javadoc собирает тексты таких комментариев в один файл.

 



Идентификаторы используются в качестве имен переменных, классов и методов. Идентификатор может быть любой последовательностью букв верхнего и нижнего регистров, чисел, символов подчеркивания, знака $. Он не должен начинаться с цифры, чтобы не путать его с числовой константой. Язык Java чувствителен к регистру идентификаторов. 

 



Ключевые слова и значения нельзя использовать в качестве имен переменных, классов или методов.

 





Java – язык со строгой типизацией. Это означает, что:

каждая переменная и каждое выражение имеет строго определенный тип

нет никаких автоматических преобразований или приведений несовместимых типов (в отличие от С/С++)

контролируется соответствие типов между параметром и аргументом функции (в отличие от С/С++)

все выражения, параметры и операции присвоения проверяются на совместимость типов на этапе компиляции

Простые типы данных не являются объектно-ориентированными, т.е. они аналогичны простым типам, которые можно найти в большинстве не объектно-ориентированных языков. Это сделано с целью повышения эффективности выполнения кода (выполнение простых типов в виде объектов слишком ухудшило бы эффективность).

В отличие от некоторых других языков (С/С++), в Java из-за требования переносимости программ все типы данных имеют строго определенный диапазон, не зависящий от платформы, на которой выполняется программа. Все числовые типы (целые и с плавающей точкой) в Java являются знаковыми (в отличие от С/С++, где есть unsigned типы).

В Java простые типы всегда передаются по значению, а ссылочные по ссылке

 




Ширина целочисленного типа может не совпадать с занимаемым им количеством памяти. Исполняющая система Java может использовать для хранения целочисленных переменных большее количество памяти по соображениям эффективности выполнения кода. Например, некоторые реализации Java фактически хранят переменные типа byte и short в виде 32-битовых значений, т.к. это число соответствует размеру машинного слова большинства современных процессоров. Однако, при разработке программ можно не заботиться о том, сколько памяти реально будет выделено для хранения переменной данного типа, т.к. ее поведение в программе всегда будет соответствовать объявленному типу.

Тип byte лучше всего подходит для хранения произвольного потока байтов, загружаемого из сети или из файла. За исключением этих случаев, использования типа byte, как правило, следует избегать. Для обычных целых чисел, используемых в качестве счетчиков и в арифметических выражениях, гораздо лучше подходит тип int, т.к. все операции с переменными этого типа процессор выполняет наиболее быстро.

Тип short – наиболее редко используемый в Java тип, поскольку он определен как тип, в котором старший байт хранится первым (в так называемом формате «big-endian»). Такой формат хранения данных принят в архитектурах SPARC и Power PC, в то время как в архитектуре Intel x86 первым хранится младший (менее значащий) байт (формат «little-endian»).

Чаще всего используется тип int. Он наиболее универсален и эффективен, с точки зрения выполнения кода.

Тип long используется в тех случаях, когда int недостаточен (по ширине) для хранения желаемого значения.  

 


Для представления символов Java использует кодировку Unicode. Unicode определяет полный набор интернациональных символов, объединяющий множество наборов символов национальных алфавитов. По этой причине в Unicode для хранения каждого символа выделяется 16 бит. Таким образом, тип char в Java – 16 разрядный. Диапазон его значений варьируется от 0 до 65 535. Стандартный набор символов ASCII располагается в интервале 0 – 127.

 


















В Java-программах можно выделить две основных области действия: одна определяется классом, а другая методом. Область действия класса рассматривается ниже. Область действия, определяемая методом, начинается с его открывающей фигурной скобки и заканчивается закрывающей. Если метод имеет параметры, они также включаются в его область действия и работают как любая переменная метода. Переменные, объявленные внутри области действия, недоступны коду, который определен вне этой области. Области действия могут быть вложены. Каждый раз когда создается новый блок кода ({ }), создается новая область действия. Внешняя область действия включает внутреннюю, т.е. объекты, объявленные во внешней области, будут действовать и во внутренней. Обратное – не верно, т.е. объекты, объявленные во внутренней области не действуют во внешней. Переменные можно объявлять в любой точке внутри блока кода, но область действия переменной начинается только после ее объявления.

При выполнении программы переменные создаются в момент входа в их область действия и разрушаются при выходе из этой области. Это означает, что переменная не будет сохранять свое значение при выходе из области действия (например, переменные, объявленные и проинициализированные внутри метода, не будут сохранять свои значения между вызовами этого метода). Таким образом, время жизни переменной ограничено областью ее действия.

В отличие от С/С++, в Java во внутренней области действия нельзя объявлять переменную с таким же именем как во внешней области действия.

 





















Правила работы с массивами в Java существенно отличаются от С/С++. Чтобы создать массив, необходимо вначале объявить ссылочную переменную массива.

type var_name [ ];

type определяет тип данных каждого элемента массива. Но это объявление создает только ссылочную переменную массива, но не сам массив. Чтобы связать ссылочную переменную с фактическим массивом, нужно выделить память для него с помощью операции new.

var_name = new type[size];

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

В отличие от неинициализированной переменной, к неинициализированному элементу массива можно обращаться, поскольку все элементы массива в момент объявления автоматически инициализируются нулями (в отличие от С/С++). 

Возможна комбинация объявления ссылочной переменной и выделения памяти под массив.

type var_name[ ] = new type[size];

Массив можно инициализировать во время объявления. При этом нет необходимости использовать оператор new и указывать размер массива, т.к. массив будет автоматически создаваться достаточно большим, чтобы содержать столько элементов, сколько определено в инициализаторе массива:   

type var_name[ ] = {1,2,3,4,5};

В этом случае автоматически создается массив из 5 элементов типа int, и каждый элемент инициализируется очередным значением из списка.

В отличие от С/С++, на этапе выполнения программы исполнительная система Java тщательно проверяет индексы элементов массива, к которым производится обращение, чтобы убедиться, что они не выходят из объявленного диапазона. Если обнаруживается попытка обращения к элементу массива, находящемуся вне диапазона, выдается сообщение об ошибке времени выполнения (ArrayIndexOutOfBoundsException).

 










































Назад | Содержание | Вперед