Upload
unguryan-vitaliy
View
45
Download
6
Embed Size (px)
Citation preview
Переменные, типы данных, операторы.
Виталий Унгурян [email protected]
Лексика языка. Лексемы
идентификаторы (identifiers);ключевые слова (key words);литералы (literals);разделители (separators);операторы (operators).
Основы синтаксиса.
Язык Java различает прописные и строчные буквы. Это означает, что имена всех функций и ключевые слова следует записывать в точности так, как они значатся в примерах и справочниках.
Cat не то же самое, что cat
Основы синтаксиса
Каждая команда (оператор) в языке Java должна заканчиваться точкой с запятой.
System.out.println("Hello, world!");
Основы синтаксиса
Хотя бы в одном из классов должен существовать метод main(), в точности такой, как в рассмотренном примере. main метод и будет выполняться первым.В начале разбираться или пытаться запомнить правильное написание этого метода необязательно – Eclipse все сгенерирует сам, если поста вить нужную галочку.)
Что такое переменная?
Переменные -своеобразные контейнеры, которые могут нести в себе числовые, строковые или логические значение.
Переменные
Переменная — это именованная область памяти, куда может быть (пере) записано и откуда может быть прочитано значение определенного типа. Тип переменной и её имя задаются при создании переменной, они не могут быть изменены далее по ходу программы.
Локальные переменные
Лакальная переменная - это переменная объявленная внутри тела метода.
Типизация
Типизация - это способ защититься от использования объектов одного типа вместо другого, или по крайней мере управлять таким использованием.
Типы типизаций
Статическая типизация – это когда тип данных определяется на этапе компиляции. На этапе выполнения программы — динамическая.В java статическая типизация.
Типы данных примитивного типа
Логические – booleanЦелые – byte, short, int, longДробные – float, doubleСимвольные – char
Разрядность и диапазон значений.
byte – используется для хранения целых значений.
Разрядность: 1 байт. Диапазон значений: от -128 до 127
Разрядность и диапазон значений.
char - используется для хранения кода символа (целое положительное число).
Разрядность: 2 байтаДиапазон значений: от 0 до 65535
Разрядность и диапазон значений.
short – используется для хранения целых значений. В два раза больше типа byte.
Разрядность: 2 байтаДиапазон значений: от -32 768 до 32767
Разрядность и диапазон значений.
int (4 байта) – от -2 147 483 648 до 2 147 483 647
long (8 байт) – от -9223372036854775808 до 9 223 372 036 854 775 807
float (4 байта) - 3. 4е-038.. 3. 4е+ 038double (8 байт) - 1. 7е-308.. 1. 7е+ 308
Разрядность и диапазон значений.
boolean – используется для хранения логических значений true или false. Разрядность типа boolean зависит от реализации JVM.
Дробные типы
Стандарт IEEE 754 говорит нам, что представление действительных чисел должно записываться в экспоненциальном виде. Это значит, что часть битов кодирует собой так называемую мантиссу числа, другая часть — показатель порядка (степени), и ещё один бит используется для указания знака числа (0 — если число положительное, 1 — если число отрицательное).
Дробные типы
Математически это записывается так: (-1)^s × M × 2^E,
где s — знак, M — мантисса, а E — экспонента. Экспонента записывается со сдвигом, который можно получить по формуле, приведённой выше.
double
Целочисленное деление на 0 генерирует исключение, в то время как результатом деления на 0 чисел с плавающей точкой является бесконечность (или NaN в случае деления 0.0/0). Так же есть константы Double.NEGATIVE_INFINITY и Double.POSITIVE_INFINITY, равные -1.0 / 0.0 и 1.0 / 0.0 соответственно.
double
Double.MIN_VALUE на самом деле не самое минимально число, которое можно записать в double, а число которое является максимально близким к нулю.
Имя переменной - идентификатор
Имя или идентификатор переменной — это последовательность из строчных и заглавных латинских букв, цифр, а также символов «$» и «_». Имя переменной может начинаться с любого из перечисленных символов, кроме цифры. Java — язык, чувствительный к регистру букв.
Синтаксис объявление
тип идентификатор;int a;short b;char c, d; //обявление двух переменных одного типа
char e;
Объявление c инициализацией
boolean b = true;int a = 4;short b = 10;char c = 3, d = 5;char c = 'F';
См. Task02
Ключевые слова
byte, short, int, long, float, double, char, booleando, while, for, break, continue if, else, switch, case, default, breakprivate, public, protected, final, static, abstract, synchronized, volatile, strictfp
Ключевые слова
false, true, null, return, void, package, import
try, catch, finally, throw, throws new, extends, implements, class, instanceof, this, super
Константы
Константа — это именованная ячейка памяти, способная хранить данные, которые потом изменяться не будут.Константа— это переменная, объявленная с ключевым словом (модификатором) final. Также под понятие константы можно подвести понятие литерала.
Литералы
Литералы — это явно заданные в коде значения одного из допустимых типов, которые могут использоваться в различных выражениях языка (например, как аргумент метода, выводящего что-либо на экран).
Литералы
Литералы позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null-литералов. Всего в Java определены следующие виды литералов:
целочисленный (integer);дробный (floating-point);булевский (boolean);символьный (character);строковый (string);null-литерал (null-literal).
Литералы целых типов
2 - литерал типа int010 - литерал типа int заданный в восьмеричной системе счисления0x10 - литерал типа int заданный в шестнадцатеричной системе счисления2L - литерал типа long, можно использовать строчную букву l (но не рекомендуется)
Литералы целых типов
Начиная с JDK 7 можно использовать целочисленные литералы в двоичной системе. Для этого нужно использовать префикс 0b или 0B:int x = 0b1010;
Литералы целых типов
Начиная с JDK 7 можно вставлять символы подчёркивания для облегчения чтения больших числовых литералов:int x = 123_456_789;double num = 8_343_398.0;
Литералы дробных типов
2F - литерал типа float, можно использовать строчную букву f2D - литерал типа double, можно использовать строчную букву d1.2 - литерал типа double
Литералы дробных типов
2e5 - литерал типа double, записанный в научной нотации, число после e надо воспринимать как показатель степени десятки, на которую умножается число указанное до e, т.е. в данном случае записано число 2*10^5 = 200000
Литералы дробных типов
-1.23e-3 - литерал типа double, -1.23*10-3 = -0.001232e-2f - литерал типа float, численно равен 0.02
Символьные литералы
Символьные литералы представляют собой один символ и заключаются в одинарные кавычки ˊsˊ, ˊaˊ.
Допускается запись через Unicode ˊ\u0041ˊ – латинская буква “A”.
Специальные символы
\b \u0008 backspace BS -забой\t \u0009 horizontal tab HT -
табуляция\n \u000a linefeed LF -конец
строки\f \u000c form feed FF -конец
страницы\r \u000d carriage return CR -
возврат каретки
Специальные символы
\" \u0022 double quote "-двойная кавычка
\' \u0027 single quote '-одинарная кавычка
\\ \u005c backslash \-обратная косая черта
\восьмеричный код \u0000 to \u00ff Код символа в восьмеричном формате
Литералы типа boolean
false – ложьtrue - истина
См. Task3
Оператор
Оператор — это нечто, выполняющее некоторое действие над одним или двумя аргументами и выдающее результат. Синтаксически операторы чаще всего размещаются между идентификаторами или литералами.
Разделители
Разделители – специальные символы, используемые в конструкциях языка “()”, “[]”, “{}”, “;”, “,”, “.”.
Операторы
Операторы в языке Java — это специальные символы (или слова), которые сообщают транслятору о том, что вы хотите выполнить операцию с не которыми операндами.
Унарные операторы
Операторы которые требуют только один операн да, называются унарными.
Бинарные операторы
Операторы которые требуют два операнда называются бинарными.
Постфиксная и префиксная форма
Одни операторы ставятся перед операндами и называются префиксными, другие — после, их называют постфиксными операторами. Большинство же операторов ставят между двумя операндами, такие операторы называют ся инфиксными бинарными операторами.
Оператор присваивания
x = 3; y = x; z = x;
многократное использование операции присваивания в одном выражении x1 = x2 = x3 = 0;
Не рекомендуется так делать.
Унарные операторы
Унарные операторы — производят действие с одним аргументом или выражением унарный минус "-" – меняет знак числа или выражения на противоположный; унарный плюс "+" – не выполняет никаких действий над числом или выражением;
Унарные операторы
инкремент "++"– увеличивает значение переменной на 1;
декремент "--" – уменьшает значение переменной на 1.
побитовое дополнение "~" (только для целых) – инвертирует все биты поля числа (меняет 0 на 1 и 1 на 0);
Примеры унарных операций
Примеры унарных операций "+" и "-":int i = 3, j, k;j= -i; // j = -3k = +i; // k = 3Пример операции побитового дополнения:int a = 15;int b; b = ~a; // b = -16
См. Task04.java
Бинарные операторы
Бинарные операторы — используют два аргумента (например сложение, вычитание, умножение и т.д.)
Арифметические операторы
+ Сложение - Вычитание * Умножение/ Деление% Вычисление остатка++ Инкремент-- Декремент
int a = 5 + 5; a = b * c;b++; a = 10 % 2;
Примеры арифметических операций
int x = 7, x1, x2, x3, x4, x5;x1 = x +10; // x1 = 17x2 = x – 8; // x2 = -1x3 = x2 * x; // x3 = -7 x4 = x / 4; // x4 = 1 (при делении целых чисел дробная часть отбрасывается)x5 = x%4 // x5 = 3 (остаток от деления 7 на 4)
См. Task05.java
Операторы сравнения
== (равно), != (не равно),> (больше), >= (больше или равно),< (меньше) <= (меньше или равно)
Пример операций сравнения
boolean isEqual, isNonEqual, isGreater,isGreaterOrEqual, isLess, isLessOrEqual;int x1 = 5, x2 = 5, x3 = 3, x4 = 7;isEqual = x1 == x2; // isEqual = trueisNonEqual = x1 != x2; // isNonEqual = falseisGreater = x1 > x3; // isGreater = trueisGreaterOrEqual = x2 >= x3; // isGreaterOrEqual = trueisLess = x3 < x1; // isLess = trueisLessOrEqual = x1 <= x3; // isLessOrEqual = false
Логические (булевые) операторы
Логические операции операции выполняются над переменными типа boolean и их результатом также является значение типа boolean. Используются для построени логических выражений.
Булевые операторы
отрицание "!" – замена false на true, или наоборот;
операция И "&" – результат равен true, только, если оба операнда равны true, иначе результат – false;
Булевые операторы
операция ИЛИ "|" – результат равен true, только, если хотя бы один из операндов равен true, иначе результат – false.
операция исключающее ИЛИ "^" – результат равен true, только, если операнды не равны друг другу, иначе результат – false.
См. Task07.java
Таблица булевых логических операторов
Оператор Результат Оператор Результат
& ЛогическоеИ (AND)
&= И (AND) присваиванием
| ЛогическоеИЛИ (OR)
|= ИЛИ (OR) с присваиванием
^ ЛогическоеИсключающееИЛИ(XOR)
^= исключающее ИЛИ (XOR) с присваиванием
Таблица булевых логических операторов
|| оператор ORбыстрой оценкиВыражений(short circuit OR)
== Равно
&& оператор ANDбыстрой оценкиВыражений(short circuit AND)
!= не равно
! логическое унарноеотрицание (NOT)
? : Тернарныйоператор if-then-else
Тернарная операция
[выражение-1] ? [выражение-2] : [выражение-3].
Пример условной операции:
int x = n > 1 ? 0 : 1;
Переменной x будет присвоено значение 0, если n > 1 (выражение n > 1 имеет значение true) или 1, если n ≤ 1 (выражение n > 1 имеет значение false).
Комбинированные операторы
В Java для бинарных арифметических операций можно использовать комбинированные (составные) знаки операций:
идентификатор операция = выражениеЭто эквивалентно следующей операции:идентификатор = идентификатор операция выражение
Примеры комбинированных операций
1. Выражение x += b означает x = x + b.2. Выражение x -= b означает x = x - b.3. Выражение x *= b означает x = x * b.4. Выражение x /= b означает x = x / b.5. Выражение x %= b означает x = x % b.6. Выражение x &= b означает x = x & b.7. Выражение x |= b означает x = x | b.8. Выражение x ^= b означает x = x ^ b.9. Выражение x <<= b означает x = x << b.10. Выражение x >>= b означает x = x >> b.11. Выражение x >>>= b означает x = x >>> b.
См. Task9
Таблица приоритетов операторов
Операция Описание
() [ ] Круглые и квадратные скобки++ -- + - ~ ! Декремент, инкремент, унарный плюс, унарный минус, поразрядное отрицание, логическое отрицание* / % Умножение, деление, остаток от деления
+ - Сложение, вычитание>> >>> << Побитовый сдвиг вправо, побитовый сдвиг вправо с заполнением старшего бита нулем, побитовый сдвиг влево
> >= < <= Сравнение на больше, больше или равно, меньше, меньше или равно
Таблица приоритетов операторов
== != Сравнение на равенство, сравнение на неравенство& Поразрядное и логическое И^ Поразрядное и логическое исключающее ИЛИ| Поразрядное и логическое ИЛИ&& Логическое укороченное И|| Логическое укороченное ИЛИ? : Условная операция=op Комбинированные операции (op – одна из арифметических или побитовых операций)