63
Переменные, типы данных, операторы. Виталий Унгурян [email protected]

Переменные, типы данных, операторы

Embed Size (px)

Citation preview

Page 1: Переменные, типы данных, операторы

Переменные, типы данных, операторы.

Виталий Унгурян [email protected]

Page 2: Переменные, типы данных, операторы

Лексика языка. Лексемы

идентификаторы (identifiers);ключевые слова (key words);литералы (literals);разделители (separators);операторы (operators).

Page 3: Переменные, типы данных, операторы

Основы синтаксиса.

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

Cat не то же самое, что cat

Page 4: Переменные, типы данных, операторы

Основы синтаксиса

Каждая команда (оператор) в языке Java должна заканчиваться точкой с запятой.

System.out.println("Hello, world!");

Page 5: Переменные, типы данных, операторы

Основы синтаксиса

Хотя бы в одном из классов должен существовать метод main(), в точности такой, как в рассмотренном примере. main метод и будет выполняться первым.В начале разбираться или пытаться запомнить правильное написание этого метода необязательно – Eclipse все сгенерирует сам, если поста вить нужную галочку.)

Page 6: Переменные, типы данных, операторы

Что такое переменная?

Переменные -своеобразные контейнеры, которые могут нести в себе числовые, строковые или логические значение.

Page 7: Переменные, типы данных, операторы

Переменные

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

Page 8: Переменные, типы данных, операторы

Локальные переменные

Лакальная переменная - это переменная объявленная внутри тела метода.

Page 9: Переменные, типы данных, операторы

Типизация

Типизация - это способ защититься от использования объектов одного типа вместо другого, или по крайней мере управлять таким использованием.

Page 10: Переменные, типы данных, операторы

Типы типизаций

Статическая типизация – это когда тип данных определяется на этапе компиляции. На этапе выполнения программы — динамическая.В java статическая типизация.

Page 11: Переменные, типы данных, операторы

Типы данных примитивного типа

Логические – booleanЦелые – byte, short, int, longДробные – float, doubleСимвольные – char

Page 12: Переменные, типы данных, операторы

Разрядность и диапазон значений.

byte – используется для хранения целых значений.

Разрядность: 1 байт. Диапазон значений: от -128 до 127

Page 13: Переменные, типы данных, операторы

Разрядность и диапазон значений.

char - используется для хранения кода символа (целое положительное число).

Разрядность: 2 байтаДиапазон значений: от 0 до 65535

Page 14: Переменные, типы данных, операторы

Разрядность и диапазон значений.

short – используется для хранения целых значений. В два раза больше типа byte.

Разрядность: 2 байтаДиапазон значений: от -32 768 до 32767

Page 15: Переменные, типы данных, операторы

Разрядность и диапазон значений.

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

Page 16: Переменные, типы данных, операторы

Разрядность и диапазон значений.

boolean – используется для хранения логических значений true или false. Разрядность типа boolean зависит от реализации JVM.

Page 17: Переменные, типы данных, операторы

Дробные типы

Стандарт IEEE 754 говорит нам, что представление действительных чисел должно записываться в экспоненциальном виде. Это значит, что часть битов кодирует собой так называемую мантиссу числа, другая часть — показатель порядка (степени), и ещё один бит используется для указания знака числа (0 — если число положительное, 1 — если число отрицательное).

Page 18: Переменные, типы данных, операторы

Дробные типы

Математически это записывается так: (-1)^s × M × 2^E,

где s — знак, M — мантисса, а E — экспонента. Экспонента записывается со сдвигом, который можно получить по формуле, приведённой выше. 

Page 19: Переменные, типы данных, операторы

double

Целочисленное деление на 0 генерирует исключение, в то время как результатом деления на 0 чисел с плавающей точкой является бесконечность (или NaN в случае деления 0.0/0). Так же есть константы Double.NEGATIVE_INFINITY и Double.POSITIVE_INFINITY, равные -1.0 / 0.0 и 1.0 / 0.0 соответственно.

Page 20: Переменные, типы данных, операторы

double

Double.MIN_VALUE на самом деле не самое минимально число, которое можно записать в double, а число которое является максимально близким к нулю.

Page 21: Переменные, типы данных, операторы

Имя переменной - идентификатор

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

Page 22: Переменные, типы данных, операторы

Синтаксис объявление

тип идентификатор;int a;short b;char c, d; //обявление двух переменных одного типа

char e;

Page 23: Переменные, типы данных, операторы

Объявление c инициализацией

boolean b = true;int a = 4;short b = 10;char c = 3, d = 5;char c = 'F';

См. Task02

Page 24: Переменные, типы данных, операторы

Ключевые слова

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 

  

Page 25: Переменные, типы данных, операторы

Ключевые слова

false, true, null, return, void, package, import

try, catch, finally, throw, throws new, extends, implements, class, instanceof, this, super 

Page 26: Переменные, типы данных, операторы

Константы

Константа — это именованная ячейка памяти, способная хранить данные, которые потом изменяться не будут.Константа— это переменная, объявленная с ключевым словом (модификатором) final. Также под понятие константы можно подвести понятие литерала.

Page 27: Переменные, типы данных, операторы

Литералы

Литералы — это явно заданные в коде значения одного из допустимых типов, которые могут использоваться в различных выражениях языка (например, как аргумент метода, выводящего что-либо на экран).

Page 28: Переменные, типы данных, операторы

Литералы

Литералы позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null-литералов. Всего в Java определены следующие виды литералов:

целочисленный (integer);дробный (floating-point);булевский (boolean);символьный (character);строковый (string);null-литерал (null-literal).

Page 29: Переменные, типы данных, операторы

Литералы целых типов

2 - литерал типа int010 - литерал типа int заданный в восьмеричной системе счисления0x10 - литерал типа int заданный в шестнадцатеричной системе счисления2L - литерал типа long, можно использовать строчную букву l (но не рекомендуется)

Page 30: Переменные, типы данных, операторы

Литералы целых типов

Начиная с JDK 7 можно использовать целочисленные литералы в двоичной системе. Для этого нужно использовать префикс 0b или 0B:int x = 0b1010;

Page 31: Переменные, типы данных, операторы

Литералы целых типов

Начиная с JDK 7 можно вставлять символы подчёркивания для облегчения чтения больших числовых литералов:int x = 123_456_789;double num = 8_343_398.0;

Page 32: Переменные, типы данных, операторы

Литералы дробных типов

2F - литерал типа float, можно использовать строчную букву f2D - литерал типа double, можно использовать строчную букву d1.2 - литерал типа double

Page 33: Переменные, типы данных, операторы

Литералы дробных типов

2e5 - литерал типа double, записанный в научной нотации, число после e надо воспринимать как показатель степени десятки, на которую умножается число указанное до e, т.е. в данном случае записано число 2*10^5 = 200000

Page 34: Переменные, типы данных, операторы

Литералы дробных типов

-1.23e-3 - литерал типа double, -1.23*10-3 = -0.001232e-2f - литерал типа float, численно равен 0.02

Page 35: Переменные, типы данных, операторы

Символьные литералы

Символьные литералы представляют собой один символ и заключаются в одинарные кавычки ˊsˊ, ˊaˊ.

Допускается запись через Unicode ˊ\u0041ˊ – латинская буква “A”.

Page 36: Переменные, типы данных, операторы

Специальные символы

\b \u0008 backspace BS -забой\t \u0009 horizontal tab HT -

табуляция\n \u000a linefeed LF -конец

строки\f \u000c form feed FF -конец

страницы\r \u000d carriage return CR -

возврат каретки

Page 37: Переменные, типы данных, операторы

Специальные символы

\" \u0022 double quote "-двойная кавычка

\' \u0027 single quote '-одинарная кавычка

\\ \u005c backslash \-обратная косая черта

\восьмеричный код \u0000 to \u00ff Код символа в восьмеричном формате

Page 38: Переменные, типы данных, операторы

Литералы типа boolean

false – ложьtrue - истина

См. Task3

Page 39: Переменные, типы данных, операторы

Оператор

Оператор — это нечто, выполняющее некоторое действие над одним или двумя аргументами и выдающее результат. Синтаксически операторы чаще всего размещаются между идентификаторами или литералами. 

Page 40: Переменные, типы данных, операторы

Разделители

Разделители – специальные символы, используемые в конструкциях языка “()”, “[]”, “{}”, “;”, “,”, “.”.

Page 41: Переменные, типы данных, операторы

Операторы

Операторы в языке Java — это специальные символы (или слова), которые сообщают транслятору о том, что вы хотите выполнить операцию с не которыми операндами.

Page 42: Переменные, типы данных, операторы

Унарные операторы

Операторы которые требуют только один операн да, называются унарными. 

Page 43: Переменные, типы данных, операторы

Бинарные операторы

Операторы которые требуют два операнда называются бинарными.

Page 44: Переменные, типы данных, операторы

Постфиксная и префиксная форма

Одни операторы ставятся перед операндами и называются префиксными,  другие — после, их называют постфиксными операторами. Большинство же операторов ставят между двумя операндами, такие операторы называют ся инфиксными бинарными операторами.

Page 45: Переменные, типы данных, операторы

Оператор присваивания

x = 3; y = x; z = x;

многократное использование операции присваивания в одном выражении x1 = x2 = x3 = 0;

Не рекомендуется так делать.

Page 46: Переменные, типы данных, операторы

Унарные операторы

Унарные операторы — производят действие с одним аргументом или выражением унарный минус "-" – меняет знак числа или выражения на противоположный; унарный плюс "+" – не выполняет никаких действий над числом или выражением;

Page 47: Переменные, типы данных, операторы

Унарные операторы

инкремент "++"– увеличивает значение переменной на 1;

декремент "--" – уменьшает значение переменной на 1.

побитовое дополнение "~" (только для целых) – инвертирует все биты поля числа (меняет 0 на 1 и 1 на 0);

Page 48: Переменные, типы данных, операторы

Примеры унарных операций

Примеры унарных операций "+" и "-":int i = 3, j, k;j= -i;  // j = -3k = +i; // k = 3Пример операции побитового дополнения:int a = 15;int b; b = ~a; // b = -16

См. Task04.java

Page 49: Переменные, типы данных, операторы

Бинарные операторы

Бинарные операторы — используют два аргумента (например сложение, вычитание, умножение и т.д.)

Page 50: Переменные, типы данных, операторы

Арифметические операторы

+ Сложение - Вычитание * Умножение/ Деление% Вычисление остатка++ Инкремент-- Декремент

int a = 5 + 5; a = b * c;b++; a = 10 % 2;

Page 51: Переменные, типы данных, операторы

Примеры арифметических операций

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

Page 52: Переменные, типы данных, операторы

Операторы сравнения

== (равно), != (не равно),> (больше), >= (больше или равно),< (меньше) <= (меньше или равно)

Page 53: Переменные, типы данных, операторы

Пример операций сравнения

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

Page 54: Переменные, типы данных, операторы

Логические (булевые) операторы

Логические операции операции выполняются над переменными типа boolean и их результатом также является значение типа boolean. Используются для построени логических выражений.

Page 55: Переменные, типы данных, операторы

Булевые операторы

отрицание "!" – замена false на true, или наоборот;

операция И "&" – результат равен true, только, если оба операнда равны true, иначе результат – false;

Page 56: Переменные, типы данных, операторы

Булевые операторы

операция ИЛИ "|" – результат равен true, только, если хотя бы один из операндов равен true, иначе результат – false.

операция исключающее ИЛИ "^" – результат равен true, только, если операнды не равны друг другу, иначе результат – false.

См. Task07.java

Page 57: Переменные, типы данных, операторы

Таблица булевых логических операторов

Оператор Результат Оператор Результат

& ЛогическоеИ (AND)

&= И (AND) присваиванием

| ЛогическоеИЛИ (OR)

|= ИЛИ (OR) с присваиванием

^ ЛогическоеИсключающееИЛИ(XOR)

^= исключающее ИЛИ (XOR) с присваиванием

Page 58: Переменные, типы данных, операторы

Таблица булевых логических операторов

|| оператор ORбыстрой оценкиВыражений(short circuit OR)

== Равно

&& оператор ANDбыстрой оценкиВыражений(short circuit AND)

!= не равно

! логическое унарноеотрицание (NOT)

? : Тернарныйоператор if-then-else

Page 59: Переменные, типы данных, операторы

Тернарная операция

[выражение-1] ? [выражение-2] : [выражение-3].

Пример условной операции:

int x = n > 1 ? 0 : 1;

Переменной x будет присвоено значение 0, если n > 1 (выражение n > 1 имеет значение true) или 1, если n ≤ 1 (выражение n > 1 имеет значение false).

Page 60: Переменные, типы данных, операторы

Комбинированные операторы

В Java для бинарных арифметических операций можно использовать комбинированные (составные) знаки операций:

идентификатор операция = выражениеЭто эквивалентно следующей операции:идентификатор = идентификатор операция выражение

Page 61: Переменные, типы данных, операторы

Примеры комбинированных операций

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

Page 62: Переменные, типы данных, операторы

Таблица приоритетов операторов

Операция Описание

() [ ] Круглые и квадратные скобки++ -- + - ~ ! Декремент, инкремент, унарный плюс, унарный минус, поразрядное отрицание, логическое отрицание* / % Умножение, деление, остаток от деления

+ - Сложение, вычитание>> >>> << Побитовый сдвиг вправо, побитовый сдвиг вправо с заполнением старшего бита нулем, побитовый сдвиг влево

> >= < <= Сравнение на больше, больше или равно, меньше, меньше или равно

Page 63: Переменные, типы данных, операторы

Таблица приоритетов операторов

== != Сравнение на равенство, сравнение на неравенство& Поразрядное и логическое И^ Поразрядное и логическое исключающее ИЛИ| Поразрядное и логическое ИЛИ&& Логическое укороченное И|| Логическое укороченное ИЛИ? : Условная операция=op Комбинированные операции (op – одна из арифметических или побитовых операций)