SlideShare a Scribd company logo
Синтаксис Java
Лексические элементы языка:
•
•
•
•
•
•
•

пробельные символы
комментарии
идентификаторы
разделители
ключевые слова
константы (литералы)
операции

1
Синтаксис Java
Пробельные символы
•
•
•

пробел
табуляция
перевод строки

Комментарии
•
•

•

// … однострочный комментарий
/* …
многострочный комментарий
… */
/** …
документационный комментарий … */
Для сборки док.комментариев: javadoc.exe
2
Синтаксис Java
Идентификаторы
•
•
•

A-Z, a-z, 0-9, _, $
2count
Test ≠ test ≠ TEST

Разделители
()

Списки параметров в объявлении и вызове метода, задание приоритета
операций в выражениях, выделение выражений в операторах управления
выполнением программы и в операторах приведения типов.

{}

Блоки кода, списки инициализации массивов

[]

Объявление массивов, доступ к элементам массивов

;

Разделяет операторы.

,

Разделяет идентификаторы в объявлениях переменных, а также цепочку
выражений внутри оператора for.

.

Разделение имен пакетов и классов, обращение к члену или методу класса.
3
Синтаксис Java
Ключевые слова
abstract

const

finally

int

public

this

boolean

continue

float

interface

return

throw

break

default

for

long

short

throws

byte

do

goto

native

static

transient

case

double

if

new

strictfp

try

catch

else

implements

package

super

void

char

extends

import

private

switch

volatile

class

final

instanceof

protected

synchronized

while
4
Типы данных в Java
Целые (byte, short, int, long)
C пл.точкой (float, double)
Простые
Символьный (char)
Типы данных

Логический (boolean)
Ссылочные
Массивы
Классы
Интерфейсы
5
Типы данных в Java
Целочисленные типы
Имя Ши- Диапазон
типа рина
byte

8

-128 … 127

short

16

-32 768 … 32 767

int

32

-2 147 483 648 … 2 147 483 647

long

64

-9 223 372 036 854 775 808 … 9 223 372 036 854 775 807

С плавающей точкой
Имя типа Ширина

Диапазон

float

32

3.4е-038 … 3.4е+038

double

64

1.7е-308 … 1.7е+308
6
Типы данных в Java
Символьный тип
Имя типа

Ширина

Диапазон

char

16

0 … 65 535

Логический тип
Переменная типа boolean может принимать одно из двух
значений: true или false. При этом true !=1, а false !=0.
Ширина типа зависит от реализации JVM.

7
Константы в Java
Типы констант (литералов):
•
•
•
•
•

целочисленные
с плавающей точкой
булевские
символьные
строковые

8
Константы в Java
Целочисленные константы
-

23 //десятичный
06 //восьмеричный
0x6A, 0X75F //шестнадцатеричный
987L, 3456l //long

int i = 09; ??? Неверно, т.к. восьмеричная
константа не может содержать 9
byte b;
b=17; - верно
b=523; - неверно, 523 выходит за
диапазон byte
9
Константы в Java
Константы с плавающей точкой
-

3.14159
//обычная форма
314159Е-05 //научная форма

Логические константы
-

true != 1
false != 0

Строковые константы
-

“Hello, World!”
“двеnстроки”
“”А это в кавычках””
10
Константы в Java
Символьные литералы
-

‘a’,’z’,’@’
управляющие последовательности

Управляющая последовательность
ddd (три цифры!!!)
uxxxx (четыре цифры!!!)
’
’’

r
n
f
t
b

Описание
Восьмеричный символ UNICODE
Шестнадцатеричный символ UNICODE
Одиночная кавычка
Двойная кавычка
Обратный слэш
Возврат каретки
Перевод строки
Перевод страницы
Символ табуляции (Tab)
Возврат на один символ (backspace)
11
Переменные
Объявление переменных:
<type> identifier [ = value ] [, identifier [ = value ] ... ];
–
–
–
–
–
–
–
–

byte b = 0х55;
short s = 0x55ff;
int i = 1000000;
long l = 0xffffffffL;
char с = 'a' ;
float f = .25f;
double d = .00001234;
boolean bool = true;

12
Преобразование и
приведение типов
Автоматическое преобразование
Необходимо соблюдение 2-х условий:
- типы совместимы
- целевой тип больше по диапазону чем исходный
byte
short
int
long
float
double
char

boolean

13
Преобразование и
приведение типов
Автоматическое преобразование
byte b = 3;
int i = b;
boolean bool = b;
•
•
•
•

//корректное преобразование
//ошибка: несовместимые типы

char short s = i;
c = ‘a’;
int i = с;
short s = c;
c = s;

?
?
?

//ошибка: целевой тип меньше
верно!
исходного
неверно! (диапазон char больше)
неверно! (потеря знака)

14
Преобразование и
приведение типов
Явное приведение типов

1. Сужение (narrowing

int i = 260;

conversion)

byte b = (byte) i;

2. Усечение (truncation)
3. Сужение + усечение

double d = 4.45;
byte b = (byte) d;
double d = 260.45;

b=4

b=4

b=4

byte b = (byte) d;
15
Преобразование и
приведение типов
Автоматическое расширение
типов в выражениях

•

все byte и short-операнды расширяются до int

•

если один операнд в выражении имеет тип long, тип всех
операндов и результата расширяется до long

•

если один операнд в выражении имеет тип float, тип всех
операндов и результата расширяется до float

•

если один операнд в выражении имеет тип double, тип всех
операндов и результата расширяется до double
16
Преобразование и
приведение типов
Для чего нужно автоматическое
расширение типов?
byte b = 100;
int i = (b * 2)/2; //без расширения типов даст -28 вместо 100!

17
Массивы
Одномерные массивы
Объявляются только динамически с помощью
оператора new или списка инициализации.
Формы объявления:
1.<type> arr[ ];
arr = new <type>[10];

int m[ ];
m = new int[3];

2. <type> [ ]arr;
arr = new <type>[10];
3.<type> arr[ ] = new <type>[10];
4.<type> arr[ ] = {1,2,3,4,5};

int m[ ]=new int[3];

int m[ ]={1,2,3};
18
Массивы
Многомерные массивы
<type> var_name [ ][ ]…[ ] = new <type>[ ][ ] … [ ]
int massiv[ ][ ] = new int[3][5];
int massiv[ ][ ] = {{1,2}, {3,4}, {5,6}};
«Ступенчатые» массивы:
int massiv[ ][ ] = new int[3][ ];
massiv[0] = new int[1];
massiv[1] = new int[2];

[0][0]
[1][0]
[2][0]

[1][1]
[2][1] [2][2]

massiv[2] = new int[3];
19
Операции
• арифметические
• битовые (поразрядные)
• операции отношений
• логические операции
• операция присваивания
• условная операция

20
Операции
Арифметические операции
+
*
/
%
++
+=
-=
-*=
/=
%=

Сложение
Вычитание (или унарный минус)
Умножение
Деление
Остаток от деления по модулю
Инкремент
Присваивание со сложением
Присваивание с вычитанием
Декремент
Присваивание с умножением
Присваивание с делением
Присваивание с модулем
21
Операции
Битовые (поразрядные) операции
~

Поразрядное унарное отрицание

&

Поразрядное И

|

Поразрядное ИЛИ

^

Поразрядное исключающее ИЛИ

>>

Сдвиг вправо

<<

Сдвиг влево

>>>

Сдвиг вправо с заполнением старшего бита нулем

&=

Присваивание с поразрядным И

|=

Присваивание с поразрядным ИЛИ

^=

Присваивание с поразрядным исключающим ИЛИ

>>=

Присваивание со сдвигом вправо

>>>=

Присваивание со сдвигом вправо и заполнением старшего бита
нулем

<<=

Присваивание со сдвигом влево

22
Операции
Битовые (поразрядные) операции
Беззнаковый сдвиг
В С++:

1

0

0

1

int

0

1

0

unsigned int

>>2

1 1 1 0 0 1 0 1

1

0 0 1 0 0 1 0 1

(расширение знака)
В Java:

1

int

0

0

>>2

1 1 1 0 0 1 0 1

1

0

1

int

0

1

>>>2

0 0 1 0 0 1 0 1

(расширение знака)
23
Операции
Битовые (поразрядные) операции
Беззнаковый сдвиг
byte b = (byte) 0xf1 (-15)
byte b1 = (byte) (b>>>4)
Ожидаем:

0 0 0

0 1 1 1 1

b1 = 15

Получаем:

1 1 1 1 0 0 0 1

1. Расширение до int

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 0 0 0 1

2. Беззнаковый сдвиг
0 0 0

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

3. Усечение

1 1 1 1 1 1 1 1

b1 = -1
24
Операции
Логические операции
&

Логическое И

|

Логическое ИЛИ

^

Логическое исключающее ИЛИ

||

Укороченное ИЛИ

&&

Укороченное И

!

Логическое унарное отрицание

&=

Логическое И с присваиванием

|=

Логическое ИЛИ с присваиванием

^=

Исключающее ИЛИ с присваиванием
25
Операции
Логические операции
Таблица истинности
A

B

A&B

A|B

A^B

!A

false

false

false

false

false

true

true

false

false

true

true

false

false

true

false

true

true

true

true

true

true

true

false

false

26
Операции
Операция присваивания
var_name = <expression>;

Условная операция
<expression1> ? <expression2> :
<expression3>
int value, abs;
abs = value < 0 ? –value : value;

27
Операции
Таблица приоритетов
1. ( ) [ ] .

8. &

2. ++ -- ~ !

9. ^

3. * / %

10. |

4. + -

11. &&

5. >> >>> <<

12. ||

6. > >= <

13. ? :

7. == !=

<=

14. = += -= *= /=
%= &= |= ^= >>=
>>>= <<=

28
Управляющие операторы
Оператор if
if (<condition>) <statement1>;
[else <statement2>; ]
int flag;
if (!flag)
//проверка на равенство нулю,
допустимая в С/С++, но недопустимая в Java
if (flag == 0)
//так необходимо организовывать
проверку на равенство нулю в Java
Во всех операторах <condition> - выражение,
возвращающее тип boolean
29
Управляющие операторы
Оператор switch
switch (<expression>)
{case value1:
<последовательность операторов1>
break;
…
case valueN:
<последовательность операторовN>
break;
default:
<последовательность операторов>
}

30
Управляющие операторы
Операторы циклов
while (<condition>)
{<последовательность операторов>
}
do
{<последовательность операторов>
} while (<condition>)
for (<initialization>; <condition>; <iteration>)
{<последовательность операторов>
}
31
Управляющие операторы
Оператор break
{int i, j,x=3;
int matrix[ ][ ] = { {1,2,3}, {4,5,6}, {7,8,9} };
test_label:for (i=0;i<3;i++)
{for (j=0;j<3;j++)
{if (matrix[ i ][ j ]==x) break test_label;
}
}
System.out.println ("String " + i + "column " + j);
}
32

More Related Content

What's hot (17)

PDF
[JAM 1.1] Clean Code (Paul Malikov)
Evgeny Kaziak
 
PDF
C++ Базовый. Занятие 02.
Igor Shkulipa
 
PDF
Как работают оптимизации компилятора
ssuserdc56a9
 
PPT
Lecture 1
Anastasia Snegina
 
PPTX
Базовые операторы Java
metaform
 
PDF
Глава 3: примитивные типы и операции с ними в Java
metaform
 
PDF
Функционально декларативный дизайн на C++
Alexander Granin
 
PDF
основы Java для_any_logic
KVPw
 
PDF
PVS-Studio в 2021 - Примеры ошибок
Andrey Karpov
 
PDF
Tricky Java Generics
Alexander Matorin
 
PPTX
Массивы в Java
metaform
 
ODP
Использование хранимых процедур в MySQL (Константин Осипов)
Ontico
 
PPTX
В помощь разработчику: мини-анализатор кода
Andrey Karpov
 
PDF
Теории и практики фунционального программирования - GDG D2D
0xffAA
 
PDF
пр6 (2часа)b pwin
Anastasia Snegina
 
PPTX
Attributes in VHDL
vitaliykulanov
 
[JAM 1.1] Clean Code (Paul Malikov)
Evgeny Kaziak
 
C++ Базовый. Занятие 02.
Igor Shkulipa
 
Как работают оптимизации компилятора
ssuserdc56a9
 
Базовые операторы Java
metaform
 
Глава 3: примитивные типы и операции с ними в Java
metaform
 
Функционально декларативный дизайн на C++
Alexander Granin
 
основы Java для_any_logic
KVPw
 
PVS-Studio в 2021 - Примеры ошибок
Andrey Karpov
 
Tricky Java Generics
Alexander Matorin
 
Массивы в Java
metaform
 
Использование хранимых процедур в MySQL (Константин Осипов)
Ontico
 
В помощь разработчику: мини-анализатор кода
Andrey Karpov
 
Теории и практики фунционального программирования - GDG D2D
0xffAA
 
пр6 (2часа)b pwin
Anastasia Snegina
 
Attributes in VHDL
vitaliykulanov
 

Similar to 2. java lecture syntax (20)

PPT
Java. Переменные, типы данных, операторы
Unguryan Vitaliy
 
ODP
Java - основы языка
Леонид Ставила
 
PPT
Msu.Center.Lectures.J01 Introducing Java
olegol
 
PPT
01 - Знакомство с Java
phearnot
 
PPT
Java. Lecture 01. Introducing Java
colriot
 
PPTX
Основы языка питон. История языка питон.
HSharipov
 
PDF
02 - Java. Базовый синтаксис Java
Roman Brovko
 
PPT
9. java lecture library
MERA_school
 
PPTX
Step 1
DmitryTrushkin
 
PPT
Rgsu04
EvgeniyaOstr
 
PPT
Rgsu04
EvgeniyaOstr
 
PDF
Lec 1
Alexander Rusin
 
PPT
03_JavaBasicConstructionsAndDatatypes
dklenov
 
PPTX
Step 2
DmitryTrushkin
 
PPT
язык програмирования
Olegmingalev1997
 
PPT
Типы данных
MonsterXX
 
PPTX
1 вводное занятие
luis_blanco_rau
 
PPTX
тема 1.введение в pascal
dasha2012
 
PPT
Oop java.generics
muqaddas_m
 
Java. Переменные, типы данных, операторы
Unguryan Vitaliy
 
Java - основы языка
Леонид Ставила
 
Msu.Center.Lectures.J01 Introducing Java
olegol
 
01 - Знакомство с Java
phearnot
 
Java. Lecture 01. Introducing Java
colriot
 
Основы языка питон. История языка питон.
HSharipov
 
02 - Java. Базовый синтаксис Java
Roman Brovko
 
9. java lecture library
MERA_school
 
Rgsu04
EvgeniyaOstr
 
Rgsu04
EvgeniyaOstr
 
03_JavaBasicConstructionsAndDatatypes
dklenov
 
язык програмирования
Olegmingalev1997
 
Типы данных
MonsterXX
 
1 вводное занятие
luis_blanco_rau
 
тема 1.введение в pascal
dasha2012
 
Oop java.generics
muqaddas_m
 
Ad

More from MERA_school (8)

PPT
10. java lecture generics&collections
MERA_school
 
PPT
8. java lecture threads
MERA_school
 
PPT
7. java lecture events
MERA_school
 
PPT
6. java lecture swing
MERA_school
 
PPT
5. java lecture io
MERA_school
 
PPT
4. java lecture exceptions
MERA_school
 
PPT
3. java lecture classes
MERA_school
 
PPT
1. java lecture intro
MERA_school
 
10. java lecture generics&collections
MERA_school
 
8. java lecture threads
MERA_school
 
7. java lecture events
MERA_school
 
6. java lecture swing
MERA_school
 
5. java lecture io
MERA_school
 
4. java lecture exceptions
MERA_school
 
3. java lecture classes
MERA_school
 
1. java lecture intro
MERA_school
 
Ad

2. java lecture syntax