554.84K
Category: programmingprogramming

Типы данных и переменные

1.

Data Types and Variables

2.

Lecturer
Maksym Dobrynin (Максим Добрынин)
Full-stack Java Developer

3.

Agenda
1. Primitive types
a. Integers
b. Floating-point
2. Variables
a. Naming rules
3. Arithmetic operations and priority
a. Basic
b. Modulus
c. Compound
4. Class Math as utility
5. Type conversion and incompatible type casting
6. Auto type promotion

4.

Primitive types
В Java существует 8 примитивных типов данных:
byte (целые числа, 1 байт)
short (целые числа, 2 байта)
int (целые числа, 4 байта)
long (целые числа, 8 байтов)
float (вещественные числа, 4 байта)
double (вещественные числа, 8 байтов)
char (символ Unicode, 2 байта)
boolean (значение истина/ложь, 1 байт)

5.

Primitive types. Integers
Следующие типы относятся к целочисленными, могут хранить знания в следующих диапазонах и занимать
соответствующие количество памяти в системе

6.

Primitive types. Floating-point
Следующие типы так называемые с плавающеей запятой либо чаще употреблямые как дробнодесятичные, могут хранить знания в следующих диапазонах и занимать соответствующие количество
памяти в системе

7.

Variables
Переменная - это именованная область памяти конкретного типа данных, которая может хранить значение или
другими словами - некий контейнер, в котором может храниться значение для дальнейшего использования в
программе
В Java все переменные должны быть объявлены до их использования. Основная форма объявления
переменных выглядит следующим образом: тип идентификатор [=значение]
int a; // объявление
int a, int b, double c; // объявление нескольких переменных
int a = 1; // инициаализация
int a = 1, int b = 0; // инициализация нескольких переменных

8.

Variables
Примитивные типы хранятся в области
памяти JVM под названием Stack

9.

Variables. Naming rules
1.
2.
3.
4.
Имя переменной должно начинаться с буквы (маленькой) и состоять из букв (Unicode) цифр и символа
подчеркивания «_». Технически возможно начать имя переменной также с «$» или «_», однако это запрещено
соглашением по оформлению кода в Java (Java Code Conventions). Кроме того, символ доллара «$», по
соглашению, никогда не используется вообще. В соответствии с соглашением имя переменной должно
начинаться именно с маленькой буквы (с заглавной буквы начинаются имена классов). Пробелы при именовании
переменных не допускаются
Имя переменной не должно быть ключевым или зарезервированным словом языка Java
Имя переменной чувствительно к регистру. youngOne и youngone — разные имена
Если выбранное вами имя переменной состоит только из одного слова — запишите его маленькими буквами. Если
оно состоит из более чем одного слова, то отделяйте каждое последующее слово в имени переменной заглавной
буквой. Например: masterJedi, supremeChancellor

10.

Arithmetic operations and priority
Арифметические операции применяются в математических выражениях таким же образом, как и в
алгебре. Следующие операции, доступные в Java

11.

Arithmetic operations and priority. Basic
К базовым операциям стоит отнести привычные нам математические операции (сложение, вычитание,
умножение и деление)
int a = 1 + 1;
int b = a * 3;
int c = b / 4;
int d = c - а;
double da = 1 + 1;
double db = da * 3;
double dc = db / 4;

12.

Arithmetic operations and priority. Modulus
Операция деления по модулю % возвращает остаток от деления. Эту операцию можно выполнять как над
числовыми типами данных с плавающей точкой, так и над целочисленными
public static void main(String args[]) {
int x = 42;
double y = 42.25;
System.out.println("x mod 10 = " + x % 10);
System.out.println("y mod 10 = " + y % 10);
}
На выходе мы получим
х mod 10 = 2
у mod 10 = 2.2 5

13.

Arithmetic operations and priority. Compound
В Java имеются специальные операции , объединяющие арифметические операции с операциями
присваивания
int a = 1, b = 2, c = 3;
a = a + 5;
b = b * 4;
c = c+ a * b;
c = c % 6;
a += 5;
b *= 4;
c += a * b;
c %= 6;
Такого рода объединенные операция порой облегчают читаемость кода и к сокращают его, поскольку никогда не
стоит забывать, что каждый символ в операции (в коде) имеет свою меру в памяти и занимают ее, что ведет к
увеличению веса программы в целомом

14.

Class Math as utility
Class Math - предназначен для группирования общих (элементарных), если хотите часто используемых операций
(экспоненциальных, логарифмических, получение квадратного корня, тригонометрические функции и т.д.)
Полезные ссылки:
1.
2.
Официальная документация и описание
Краткое описание на русском языке
public static void main(String args[]) {
double a = 3.0, b = 4.0;
double c = Math.sqrt(a * a + b * b);
В данном выражении мы без труда получаем квадратный корень числа

15.

Type conversion and incompatible type
casting
Когда данные одного типа присваиваются переменной другого типа, выполняется автоматическое
преобразование типов, если удовлетворяются два условия:
1.
2.
оба типа совместимы
длина целевого типа больше длины исходного типа
При соблюдении этих условий выполняется расширяющее преобразование. Например, тип данных int
всегда достаточно велик, чтобы хранить все допустимые значения типа byte, поэтому никакие операторы
явного приведения типов в данном случае не требуются

16.

Auto type promotion
Помимо операций присваивания, определенное преобразование типов может выполняться и в
выражениях. Это может происходить в тех случаях, когда требуемая точность промежуточного значения
выходит за пределы допустимого диапазона значений любого из операндов в выражении. В качестве
примера рассмотрим следующий фрагмент кода:
byte a = 40;
byte b = 50;
byte c = 100;
int d = a * b / c;

17.

Auto type promotion
Несмотря на все удобства автоматического продвижения типов, оно может приводить к досадным
ошибкам во время компиляции. Например, следующий правильный на первый взгляд код приводит к
ошибке:
byte b = 50;
b = b * 2;
ОШИБКА ! Значение типа int не может быть присвоено переменной типа byte

18.

Auto type promotion
В языке Java определен ряд правил продвижения типов, применяемых к выражениям. Сначала все
значения типа byte, short и char продвигаются к типу int, как объяснялось выше. Затем тип всего
выражения продвигается к типу long, если один из его операндов относится к типу long. Если же один из
операндов относится к типу float, то тип всего выражения продвигается к типу float. А если любой из
операндов относится к типу double, то и результат вычисления всего выражения относиться к типу double

19.

Recommended literature
Java 8. Полное руководство. 9-е издание - Шилдт Г.
English     Русский Rules