A b c d e f g h i j k l m n o p q r s t u v w x y z
причем одинаковые строчные и прописные буквы считаются разными символами.
Для записи комментариев и работы со строками могут дополнительно использоваться строчные и прописные буквы русского алфавита.
К категории цифр относятся десять арабских цифр:
0 1 2 3 4 5 6 7 8 9
Специальными знаками являются символы:
+ плюс ‘ апостроф
- минус “ кавычки
* звездочка ? вопросительный знак
/ дробная черта ! восклицательный знак
< меньше _ знак подчеркивания
> больше () круглые скобки
= равно [] квадратные скобки
. точка {} фигурные скобки
, запятая | вертикальная черта
; точка с запятой \ слэш
: двоеточие # знак номера (шарп)
~ тильда % процент
^ карат & амперсанд
Ключевые слова
Программы на языке Java пишутся с помощью ключевых слов (keywords), которые дают команду компьютеру на выполнение определенных действий.
В качестве ключевых слов используются слова английского языка, отражающие смысл выполняемого действия:
boolean логический if если
break прервать int целый
byte байт long длинный
case вариант main головной (основной)
catch захват(ловушка) new новый
char символьный private частный (тайный)
class класс public общедоступный (открытый)
const константа return возврат
continue продолжать short короткий
default по умолчанию static статический
do выполнять switch переключатель
double двойной try попытка (испытание)
else иначе true истина
false ложь void пустой
final while пока
float действительный
for для
Типы данных
Программы пишутся для того, чтобы обрабатывать данные. Методы и возможности по обработки данных зависят от их типа. Язык Java относится к строго типизированным языкам – каждая переменная в программе относится к определенному типу данных. Тип данных определяет диапазон изменения данных и операции, которые можно использовать для их обработки.
Все типы данных языка Java делятся на две группы:
- примитивные(простые) - primitive types,
- ссылочные - reference types.
Примитивные данные содержатся в одной ячейке памяти, не имеющей вложенных ячеек. У ссылочных данных в ячейке памяти (ссылочной переменной) содержатся не сами данные, а только адреса этих данных – ссылки на данные. При присваивании в ссылочную переменную заносится не новое значение, а новый адрес. Непосредственного доступа к адресу, хранящемуся в ссылочной переменной, нет. Это сделано для обеспечения безопасности работы с данными – как с точки зрения устранения непреднамеренных ошибок, характерных для работы с данными по их адресам в языках C/C++/Pascal, так и для предотвращения преднамеренного взлома информации.
К примитивным данным относятся следующие предопределенные типы:
Целочисленные
Тип | Кол-во байтов | Диапазон |
byte | -128…127 | |
short | -32768…32767 | |
int | -2 147 483 648…2 147 483 647 | |
long | -9 223 372 036 854 775 808… 9 223 372 036 854 775 807 | |
char | 0…65736 |
На практике использование того или иного типа определяется потребностями в системных ресурсах. Тем не менее, среди перечисленных пяти типов тип int имеет особое значение, и использовать в программах лучше всего этот тип. Причина заключается в правилах автоматического приведения типов, о которых речь пойдет позже.
Внимание!Целые десятичные данные не могут начинаться с нуля!
2. символьные данные считаются данными целого типа и соответствуют целым десятичным числам в диапазоне 0…255.Поскольку в Java для символьных данных (char) выделяется 2 байта, то это позволяет охватить практически все имеющиеся и использующиеся на сегодня символы, включая иероглифы. Символы расширенного 8-разрядного набора ISO-Latin-1 соответствует интервал значений от 0 до 255. Интервал значений от 0 до 127 определяет стандартные символы ASCII. В Java различают особую группу символов, используемых при вводе и выводе данных – управляющие символы или ESC-последовательности. Они заключаются в апострофы и состоят из слэша и одного из символов алфавита языка:
‘\b’ возврат на шаг BS (BackSpase, #8),
‘\f’ перевод страницы FF (Form Feed, #12),
‘\n’ перевод строки LF (Line Feed, #10),
‘\r’ возврат каретки CR (Carriage return, #13),
‘\t’горизонтальная табуляция HT (Horizontal Tabulation, #9),
‘\’’ апостроф
‘\\’ слэш
‘\”’ кавычка
Действительные
Тип | Кол-во байтов | Диапазон | Точность представления |
float | ±3,4×10-38… ±3,4×1038 | 8 цифр | |
double | ±1,7×10-308… ±1,7×10308 | 17 цифр |
Предпочтительно при написании программ использовать данные типа double по тем же причинам, что и типа int;
4. логические (boolean) .
Все остальные типы данных в Java – ссылочные:
- строки (String),
- массивы (Array),
- объекты (Object),
- интерфейсы (Interface),
- перечисления (Enum).
Литералы (константы)
Литералы (константы) представляют собой величины, не изменяемые в процессе выполнения программы.
В Java используются константы следующих типов:
- int – целые – целые числа в соответствующих целым типам (byte, short, int, long) диапазонах;
- double – действительные – числа с дробной частью в соответствующих действительным типам (float, double) диапазонах; их можно записывать в двух формах:
форме с фиксированной запятой: 3.14, -5.25,
форме с плавающей запятой: 2.5e-4, -0.123E15, 31.4159265e+5.
Все действительные константы хранятся в памяти компьютера в формате типа double. Если в конце константы поставить букву f, то она будет храниться в формате типа float: 3.14f,
-0.123e-15f;
- char – символьные – все символы языка Java, заключенные в апострофы: ‘a’, ‘5’,‘?’. Все символы, включая исходный текст программы, переводится компилятором в Unicode. Компилятор и исполняющая система Java работают только с кодировкой Unicode;
- String – строковые – последовательности символов, заключенные в кавычки:
“Это программа студентки Даши”, “This is a character string”,
“Введите исходные данные:”
В строковую константу могут быть включены ESC-последовательности, рассматриваемые как один отдельный символ:
“\nВведите исходные данные:”
При выводе этой константы на консоль сначала будет сделан перевод на новую строку, а затем выведено сообщение:
Введите исходные данные:
Внимание! Строки нельзя начинать на одной строке исходного кода программы, а заканчивать на другой!
Обратите внимание на разницу между строковой константой из одного символа, например, “A” , и похожей символьной константой ‘A’;
5. - boolean – логические – это две константы:
true – истина,
false – ложь.
Комментарии
Программа без комментариев – первый признак непрофессионализма.
Комментарии можно начинать или двумя знаками деления:
// это однострочный комментарий
или заключать между символами-скобками /* */:
/* это
Многострочный
комментарий */
Часто используется многострочный комментарий документационной информации:
/** это
Многострочный
Комментарий
Документационной
информации */
Он выделяет данные справочного характера.
Внутри комментария можно использовать любые допустимые на данном компьютере символы, а не только символы алфавита языка Java, поскольку комментарии не обрабатываются компилятором.
Рекомендуется использовать //-комментарии для пояснений, а скобки /* */ применять для временного исключения программных блоков при отладке программы.
Переменные
В математике с понятием переменной связывают некоторый именованный объект, который может принимать одно из допустимого множества значений.
В программировании термин переменная означает область оперативной памяти, в которой хранятся данные определенного типа. У переменной есть тип, имя и конкретное значение. Имя переменной можно рассматривать как адрес первого байта области памяти, в которой она хранится. Знание этого адреса дает возможность пользователю изменять значение переменной в процессе выполнения программы.
Таким образом, понятие переменной употребляется для обозначения величины, которая при работе программы может принимать различные значения. Каждая переменная должна иметь свое имя-идентификатор. Имена переменных программист выбирает сам, руководствуясь следующими правилами:
- имя переменной должно отражать ее смысл, то есть то, что с помощью этой переменной вычисляется,
- не допускается совпадение имени переменной со служебными словами и именами методов классов,
- в имени можно использовать буквы латинского алфавита, цифры и символ подчеркивания,
- имя должно начинаться с буквы или символа подчеркивания,
- совпадающие имена, состоящие из строчных и прописных букв, считаются различными: name и NAME – различные имена,
- если имя состоит из одного слова, то оно пишется в нижнем регистре: i, j, name,
- если имя состоит из нескольких слов, то каждое последующее слово начинается с заглавной буквы: myName, firstArray,
- символ подчеркивания рекомендуется для разделения составных имен констант и пакетов, причем имена констант пишутся в верхнем регистре: JOptionPane.ERROR_MESSAGE.
Переменные в Java могут иметь один из следующих типов:
int - целый,
double - действительный,
char - символьный,
boolean - логический,
String - строковый.
Диапазон допустимых значений переменных совпадает с диапазоном допустимых значений констант того же типа:
int: -2 147 483 648…2 147 483 647,
double: ±1,7×10-308…±1,7×10+308,
char: 0…65736.
Перед своим использованием любая переменная должна быть описана (объявлена): указан тип и имя переменной, а также по возможности инициализирована – ей присвоено начальное значение.
Самое простое описание включает в себя тип переменной и ее имя:
int i,j,k; //переменные i, j, k – целого типа
double x,y; //переменные x, y – действительного типа
char symbol; //переменная symbol – символьного типа
Желательна инициализация переменных при их описании:
int i=1, j=0, k=2;
double x=0.25, y=-1.5e-9;
char symbol=’W’;
Если при описании переменной использованы модификаторы public final, то это означает, что значение переменной нельзя изменять в программе. Такую переменную называют именованнойконстантой. Она обязательно должна быть инициализирована, и ее имя задается в верхнем регистре:
public final int VALUE=1; //именованная целая константа//VALUE
public final double MIN=0.25;//именованная действительная
// константа MIN
public final char NAME=’W’; //именованная символьная константа
//NAME
Математические функции
Математические функции служат для вычисления некоторых часто встречающихся тригонометрических и элементарных функций. Они доступны через статические методы класса Math.
Аргументы математических функций могут иметь типы double, float или int, причем все функции, кроме abs(), round(), ceil(), floor() и rint() возвращают значения типа double, а эти – типа int. Углы в тригонометрических функциях задаются в радианах:
Sin(x) sin x
Cos(x) cos x
Tan(x) tg x
Asin(x) arcsin x
Acos(x) arccos x
Atan(x) arctg x
Atan2(x,y) arctg x/y
sinh(x) sh x гиперболический синус (ex - e-x)/2
cosh(x) ch x гиперболический косинус (ex + e-x)/2
tanh(x) th x гиперболический тангенс
exp(x) ex
Log(x) ln x
Log10(x) lg x
pow(x,y) xy ошибка, если x=0 и y<=0 или
если x<0 и y не целое
sqrt(x) корень квадратный
cbrt(x) корень кубический
hypot(x, y) длина гипотенузы по двум катетам
ceil(x) наименьшее целое, большее или равное х:
ceil(5.0) = 5
ceil(5.4) = 6
ceil(5.8) = 6
floor(x) наибольшее целое, меньшее или равное x –
выделение целой части числа:
floor(5.0) = 5
floor(5.4) = 5
floor(5.8) = 5
round(x) округление аргумента:
round(5.0) = 5
round(5.4) = 5
round(5.8) = 6
rint(x) ближайшее к x целое
abs(x) |x| x – целое
min(x,y) минимальный из двух аргументов
max(x,y) максимальный из двух аргументов
toDegrees() преобразование радиан в градусы
toRadians() преобразование градусов в радианы
random() псевдослучайное действительное число вдиапазоне от 0.0 до 1.0 (не включая 1.0)
Кроме математических функций, в классе Math заданы две константы:
Math.PI число π 3,14159265358979323846
Math.E число e 2,7182818284590452354
Для получения случайных чисел можно воспользоваться методом Math.random(), а можно воспользоваться возможностями, предоставляемыми классом Random:
nextBoolean() генерирование случайного логического значения
nextDouble() генерирование случайного числа типа double в диапазоне от 0 до 1
nextFloat() генерирование случайного числа типа float в диапазоне от 0 до 1
nextInt(k) генерирование случайного числа типа int в диапазоне от 0 до k-1
nextLong() генерирование случайного числа типа long
nextGaussian() генерирование случайного числа для стандартного нормального распределения
Выражения
В любой программе требуется производить вычисления. Для вычисления значений переменных используются выражения (формулы), которые состоят из операндов, знаков операций и скобок.
Операнды задают данные для вычислений. Операции задают действия, которые необходимо выполнить. Каждый операнд, в свою очередь, является выражением или одним из его частных случаев, например, константой или переменной. Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки.
Итак, под выражением понимается последовательность констант, переменных и математических функций, связанных знаками операций и скобками. В зависимости от типа операндов (констант, переменных или функций), используемых в выражениях, они могут иметь целый, действительный или логический тип.
Выражения целого типа
В этих выражениях используются операнды целого или символьного типов, связанные круглыми скобками и знаками арифметических и побитовых операций.
К арифметическим операциям относятся:
+ сложение 3 + 2 = 5
- вычитания 5 – 2 = 3
* умножение 3 * 2 = 6
/ деление нацело 5 / 3 = 1
% остаток от деления 5 % 3 = 2
5 % 2 = 1
5 % 1 = 0
5 % 5 = 0
2 % 3 = 2
++ инкремент x++ = x + 1
++x = x + 1
-- декремент x-- = x – 1
--x = x – 1
Как и в языке Си, в выражения целого типа языка Java могут входить и операнды символьного типа (char), при этом операции выполняются над кодами символьных констант, а результат может быть выражен или целым числом, или символом:
‘A’ + 3 = ‘D’
‘A’ + 3 = 68
‘a’ – 32 = ‘A’
‘a’ – 32 = 65
‘0’ + 1 = 49
‘0’ + 1 = ‘1’
Если в выражении целого типа встречаются операнды различных типов, то производится автоматическое преобразование типов к одному, самому длинному:
- если хотя бы один из операндов имеет тип long, то и другие преобразуются в операнды типа long, и результат будет иметь тоже тип long,
- во всех остальных случаях операнды преобразуются к типу int.
Побитовые операции выполняются над двоичными кодами операндов, над каждым разрядом кода отдельно. К ним относятся:
&И 5&3 = 1 101 = 5
&
011 = 3
___
001 = 1
|ИЛИ 5|3 = 7 101 = 5
|
011 = 3
___
111 = 7
^ исключающее ИЛИ 5^3 = 6 101 = 5
^
011 = 3
___
110 = 6
Приоритет выполнения операций:
- изменение знака
++ инкремент
-- декремент
Эти операции имеют наивысший приоритет и выполняются в выражениях справа налево.
За ними следуют операции:
*, /, % операции типа умножения
+, - операции типа сложения
& побитовое И
^ исключающее ИЛИ
| побитовое ИЛИ
Эти операции выполняются в выражениях слева направо. Порядок вычислений может быть изменен с помощью круглых скобок.
Примеры записи выражений целого типа:
5*x*x*x
a*b/c + c/(a*b)
Примеры вычислений выражений целого типа:
(5&3) + (5|3)= 8
(int)(Math.ceil(5.9) % Math.floor(5.9) + Math.round(5.9)) = 7
(int)(Math.rint(2.7) / Math.round(2.7) + 3%5) = 4