Лексика языка
Лабораторная работа 1. Создание простейшей программы на языке Java.
Цель работы.Первое знакомство с языком программирования Java, средами программирования Eclipse и NetBeans.
Краткая теория по теме
Базовые конструкции языка Java
Технология Java, как платформа, изначально спроектированная для Глобальной сети Internet, должна быть многоязыковой, а значит, обычный набор символов ASCII (American Standard Code for Information Interchange, Американский стандартный код обмена информацией), включающий в себя лишь латинский алфавит, цифры и простейшие специальные знаки (скобки, знаки препинания, арифметические операции и т.д.), недостаточен. Поэтому для записи текста программы применяется более универсальная кодировка Unicode. Например, если в программу нужно вставить знак с кодом 6917, необходимо его представить в шестнадцатеричном формате (1B05) и записать: \u1B05.
Компилятор, анализируя программу, сразу разделяет ее на:
· пробелы (white spaces);
· комментарии (comments);
· основные лексемы (tokens).
Пробелами в данном случае называют все символы, разбивающие текст программы на лексемы. Это как сам символ пробела (space, \u0020, десятичный код 32), так и знаки табуляции и перевода строки. Они используются для разделения лексем, а также для оформления кода, чтобы его было легче читать. Например, следующую часть программы (вычисление корней квадратного уравнения):
double a = 1, b = 1, c = 6; double D = b * b - 4 * a * c; if (D >= 0) { double x1 = (-b + Math.sqrt (D)) / (2 * a); double x2 = (-b - Math.sqrt (D)) / (2 * a); } |
можно записать и в таком виде:
double a=1,b=1,c=6;double D=b*b-4*a*c;if(D>=0) {double x1=(-b+Math.sqrt(D))/(2*a);double x2=(-b-Math.sqrt(D))/(2*a);} |
В обоих случаях компилятор сгенерирует абсолютно одинаковый код. Единственное соображение, которым должен руководствоваться разработчик, - легкость чтения и дальнейшей поддержки такого кода.
Комментарии не влияют на результирующий бинарный код и используются только для ввода пояснений к программе. В Java комментарии бывают двух видов: строчные и блочные. Строчные комментарии начинаются с ASCII-символов // и длятся до конца текущей строки, например:
int y=1970; // год рождения
Блочные комментарии располагаются между ASCII-символами /* и */, могут занимать произвольное количество строк. Кроме этого, существует особый вид блочного комментария – комментарий разработчика (/** комментарии*/). Он применяется для автоматического создания документации кода.
Лексика языка
Лексика описывает, из чего состоит текст программы, каким образом он записывается и на какие простейшие слова (лексемы) компилятор разбивает программу при анализе. Лексемы (или tokens в английском варианте) – это основные "кирпичики", из которых строится любая программа на языке Java. Ниже перечислены все виды лексем в Java:
· идентификаторы (identifiers);
· ключевые слова (key words);
· литералы (literals);
· разделители (separators);
· операторы (operators).
Идентификаторы - это имена, которые даются различным элементам языка для упрощения доступа к ним. Имена имеют пакеты, классы, интерфейсы, поля, методы, аргументы и локальные переменные. Длина имени не ограничена. Идентификатор состоит из букв и цифр. Имя не может начинаться с цифры.
Ключевые слова – специальные лексемы, зарегистрированные в системе для внутреннего использования (представлены на рисунке ниже).
Рис. 2.1. Ключевые слова Java
Литералы позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null-литералов. В Java определены следующие виды литералов:
· целочисленный (integer);
· дробный (floating-point);
· булевский (boolean);
· символьный (character);
· строковый (string);
· null-литерал (null-literal).
Целочисленные (тип int занимает 4 байта, тип long – 8) литералы позволяют задавать целочисленные значения в десятеричном, восьмеричном и шестнадцатеричном виде. Запись нуля можно осуществить следующими способами:
· 0 (10-ричная система)
· 00 (8-ричная)
· 0x0 (16-ричная)
Если в конце литерала не стоит указателя на тип, то литерал по умолчанию имеет тип int.
Дробные литералы (тип float занимает 4 байта, тип double – 8) представляют собой числа с плавающей десятичной точкой. Дробный литерал состоит из следующих составных частей (по умолчанию имеет тип double):
· целая часть;
· десятичная точка (используется ASCII-символ точка);
· дробная часть;
· показатель степени (состоит из латинской ASCII-буквы «E» в произвольном регистре и целого числа с опциональным знаком «+» или «–»);
· окончание-указатель типа (D или F).
Символьные литералы. Представляют собой один символ и заключаются в одинарные кавычки ‘s’, ‘a’. Допускается запись через Unicode ‘\u0041’ – латинская буква “A”.
Строковые литералы состоят из набора символов и записываются в двойных кавычках: “символьный литерал”.
Null литерал может принимать всего одно значение: null. Это литерал ссылочного типа, причем эта ссылка никуда не ссылается.
Разделители – специальные символы, используемые в конструкциях языка “()”, “[]”, “{}”, “;”, “,”, “.”.
Операторы используются в различных операциях – арифметических, логических, битовых, операциях сравнения и присваивания.
Пример простой программы “Hello, world!” выглядит следующим образом:
public class Test { /** * Основной метод, с которого начинается * выполнение любой Java программы. */ public static void main (String args[]) { System.out.println("Hello, world!"); } } |