Типы данных и операторы

Содержание

Слайд 2

План лекции Типы данных в Java Операторы для работы с примитивными

План лекции

Типы данных в Java
Операторы для работы с примитивными и ссылочными

типами
Работа со строками
Массивы
Инструкции, управляющие ходом выполнения программы
Слайд 3

Типы данных в Java Java – строго типизированный язык тип известен

Типы данных в Java

Java – строго типизированный язык
тип известен на момент

компиляции
выявление многих ошибок до выполнения
Две группы типов данных
Примитивные или простые (primitive)
Ссылочные или объектные (reference)
Слайд 4

Характеристики типов данных Множество значений для примитивных типов – значения из

Характеристики типов данных

Множество значений
для примитивных типов – значения из диапазона этого

типа
для ссылочных типов – ссылки на объекты, контракт которых включает в себя контракт, определяемый типом ссылки
Возможные операции со значениями
для примитивных типов – операторы
для ссылочных типов – действия, входящие в контракт типа (вызов методов и обращение к полям), и операторы
Форма хранения и представления
форма хранения определяется реализацией JVM
JVM гарантирует одинаковое представление, не зависящее от реализации
Слайд 5

Примитивные типы Булевый (логический) тип boolean – допускает значения true или

Примитивные типы

Булевый (логический) тип
boolean – допускает значения true или false
Целочисленные типы
char

– 16-битовый символ Unicode
byte – 8-битовое целое число со знаком
short – 16-битовое целое число со знаком
int – 32-битовое целое число со знаком
long – 64-битовое целое число со знаком
Вещественные типы
float – 32-битовое число с плавающей точкой
(IEEE 754-1985)
double – 64-битовое число с плавающей точкой
(IEEE 754-1985)
Слайд 6

Переменные Используются для хранения данных Имеет 3 базовые характеристики имя тип

Переменные

Используются для хранения данных
Имеет 3 базовые характеристики
имя
тип данных
значение
Переменная объявляется
Переменная инициализируется

Слайд 7

Переменные Примеры объявления переменных примитивного типа int a; int b =

Переменные

Примеры объявления переменных примитивного типа

int a;
int b = 1, c =

2 + 3;
int d = b + c;
int e = a = 7;
final double pi = 3.1415;

При объявлении нужно указать тип и имя
Инициализация при объявлении или позже

Слайд 8

Переменные Именованные участки памяти, способные содержать значения определенного типа Могут быть

Переменные

Именованные участки памяти, способные содержать значения определенного типа
Могут быть объявлены в

различных частях кода
поля объектов и классов, параметры методов и др.
Область видимости переменной определяется местом ее объявления
Локальные переменные должны быть инициализированы перед их использованием
Слайд 9

Примитивные и ссылочные типы данных Переменные простого типа хранят непосредственно свои

Примитивные и ссылочные типы данных

Переменные простого типа хранят непосредственно свои значения
При

присваиваниях происходит копирование значений

int a = 100;
int b = a;
a = 101;
System.out.println(b); //чему равно b?

Слайд 10

Целочисленные типы

Целочисленные типы

Слайд 11

Арифметические операторы примитивных числовых типов Арифметические операции + – сложение двух

Арифметические операторы примитивных числовых типов

Арифметические операции
+ – сложение двух значений
- –

вычитание второго значения из первого
* – умножение двух значений
/ – деление первого значения на второе
% – остаток от деления первого значения на второе
Результат имеет тип, совпадающий с «наиболее широким» типом из типов операндов, но не меньше, чем int
Слайд 12

Арифметические операторы примитивных числовых типов Инкременты и декременты – соответственно, увеличивают

Арифметические операторы примитивных числовых типов

Инкременты и декременты – соответственно, увеличивают и

уменьшают значение на 1
Постфиксная форма: i++, i-- результат – прежнее значение
Префиксная форма: ++i, --i результат – новое значение
Унарные + и -
Аналогичны случаю, когда первый операнд равен 0
Если знак + или - находится перед литералом, он может трактоваться как часть литерала

idNum = nextID++;

idNum = ++nextID;

Слайд 13

Префиксная и постфиксная формы инкремента int n = 1; int i

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

int n = 1;
int i

= 2;
System.out.println(n + ++i); // инкремент, сложение
System.out.println(i);

int n = 1;
int i = 2;
System.out.println(n + i++); // сложение, инкремент
System.out.println(i);

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

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

Слайд 14

Операторы примитивных целочисленных типов операторы сравнения (возврат булева значения) , >=

Операторы примитивных целочисленных типов

операторы сравнения (возврат булева значения)
<, <=, >, >=
==,

!=
числовые операторы (возвращают число)
унарные операции + и -
арифметические операции +, -, *, /, %
инкремента и декремента ++ и --
операции битового сдвига <<, >>, >>>
битовые операции ~, &, |, ^
оператор с условием ? :
оператор приведения типов
оператор конкатенации со строкой +
Слайд 15

Операторы примитивных целочисленных типов int a = -2147483648; // наименьшее значение

Операторы примитивных целочисленных типов

int a = -2147483648; // наименьшее значение типа

int
int b = -a; // -2147483648

double c = 3 / 10;
System.out.println(c); // 0.0

int x = 100;
byte b = x; // ошибка компиляции!

System.out.println(1000*60*60*24*7); // для недели System.out.println(1000*60*60*24*30L); // для месяца

byte b = 100;
byte c = b + 1; // ошибка компиляции!

Слайд 16

Операторы примитивных целочисленных типов -2147483648 -> 10000..0000 -1 -> 11111..1111 2147483647

Операторы примитивных целочисленных типов
-2147483648 -> 10000..0000
-1 -> 11111..1111
2147483647 ->

01111..1111
2147483648 -> 010000..0000

int a = -2147483648; // наименьшее значение типа int
int b = -a; // -2147483648

Слайд 17

Операторы примитивных целочисленных типов int val = 2147483647; String str =

Операторы примитивных целочисленных типов

int val = 2147483647;
String str = Integer.toBinaryString(val);
System.out.println(str); //

1111111111111111111111111111111

String str = "1111111111111111111111111111111";
int val = Integer.parseInt(str, 2);
System.out.println(val); // 2147483647

Десятичное целое в бинарную запись

Бинарная запись в десятичное целое

Слайд 18

Операторы примитивных целочисленных типов int x = 100; long y =

Операторы примитивных целочисленных типов

int x = 100; long y = 200;


int z = x + y; // ошибка компиляции!

byte b = 127;
byte c = (byte)-b; // преобразование типа, иначе ошибка

byte x = 10; byte y = 20;
byte z = (x > y) ? x : y; // верно, x и y одного типа
byte n = (x > 0) ? x : -x; // неверно, -x типа int

print(1 + 2 + "text"); // 3text
print("text" + 1 + 2); // text12

char c1 = 10; char c2 = 'A'; // для А код 65, \u0041
int i = c1 + c2 - 'B'; // результат 9

Слайд 19

Побитовые операторы примитивных целых типов Логические операторы & – побитовое «и»

Побитовые операторы примитивных целых типов

Логические операторы
& – побитовое «и» (and) 1

& 3 -> 1 00000001 & 00000011 -> 00000001
| – побитовое «или» (or) 1 | 3 -> 3 00000001 | 00000011 -> 00000011
^ – побитовое «исключающее или» (xor) 1 ^ 3 -> 2 00000001 ^ 00000011 -> 00000010
~ – побитовое отрицание ~ 1 -> -2 ~00000001 -> 11111110
Вычисления производятся в типе int либо long
Слайд 20

Побитовые операторы примитивных целых типов Операторы сдвига 4 00000001 00000100 >>

Побитовые операторы примитивных целых типов

Операторы сдвига
<< – сдвиг влево 1 <<

2 -> 4 00000001 << 2 -> 00000100
>> – арифметический сдвиг вправо 4 >> 2 -> 1 00000100 >> 2 -> 00000001 -1 >> 2 -> -1 11111111 >> 2 -> 11111111
>>> – логический сдвиг вправо 4 >>> 2 -> 1 00000100 >>> 2 -> 00000001 -1 >>> 2 -> 1073741823 11111111 >>> 2 -> 00111111 11111111 11111111 11111111
Вычисления производятся в типе int либо long
Слайд 21

Дробные типы Знаковые типы Определены границы значений Определены границы точности

Дробные типы

Знаковые типы
Определены границы значений
Определены границы точности

Слайд 22

Операторы примитивных вещественных типов операторы сравнения (возврат булева значения) , >=

Операторы примитивных вещественных типов

операторы сравнения (возврат булева значения)
<, <=, >, >=
==,

!=
числовые операторы (возвращают число)
унарные операции + и -
арифметические операции +, -, *, /, %
инкремента и декремента ++ и --
оператор с условием ? :
оператор приведения типов
оператор конкатенации со строкой +
Слайд 23

Особенность примитивных вещественных типов Константы классов Float и Double Positive Infinity

Особенность примитивных вещественных типов

Константы классов Float и Double
Positive Infinity (Infinity)
Negative Infinity (-Infinity)
Not

a Number (NaN)
Различаются значения 0, +0 и -0

int a = 5, b = 0;
int c = a / b;
System.out.println(c);

float a = 5, b = 0;
float c = a / b;
System.out.println(c);

Exception in thread "main" java.lang.ArithmeticException

Infinity

Слайд 24

Операторы примитивных вещественных типов float f = 1e40f; // значение слишком

Операторы примитивных вещественных типов

float f = 1e40f; // значение слишком велико,

overflow double d = 1e-350; // за границами точности, underflow

System.out.println(1e-40f/1e10f); // 0.0
System.out.println(-1e-300/1e100); // -0.0

System.out.println(1f/0f); // Infinity
System.out.println(-1d/0d); // -Infinity

System.out.println(0.0/0.0); // NAN
System.out.println((1.0/0.0)*0.0); // NAN

Слайд 25

Операторы примитивных вещественных типов System.out.println(1/2); // 0 System.out.println(1/2.); //0.5 int x

Операторы примитивных вещественных типов

System.out.println(1/2); // 0
System.out.println(1/2.); //0.5

int x = 1;
int y =

2;
print (x / y); // 0
print((double) x / y); // 0.5
print(1.0 * x / y); // 0.5

System.out.println(0.0==-0.0); // true
System.out.println(0.0>-0.0); // false

Слайд 26

Операторы примитивных вещественных типов double d = 1e-305 * Math.PI; System.out.println(d);

Операторы примитивных вещественных типов

double d = 1e-305 * Math.PI;
System.out.println(d);
for

(int i = 0; i < 4; i++)
System.out.println(d /= 100000);

3.141592653589793E-305
3.1415926535898E-310
3.141592653E-315
3.142E-320
0.0

Еще небольшой пример

И его результат

Слайд 27

Операторы Постфиксные Унарные Создание и приведение Арифметика Арифметика Побитовый сдвиг Сравнение

Операторы

Постфиксные
Унарные
Создание и приведение
Арифметика
Арифметика
Побитовый сдвиг
Сравнение
Равенство
И (and)
Исключающее ИЛИ (xor)
Включающее ИЛИ (or)
Условное

И (and)
Условное ИЛИ (or)
Условный оператор
Операторы присваивания

[] . (params) expr++ expr--
++expr --expr +expr –expr ~ !
new (type)expr
* / %
+ -
<< >> >>>
< > >= <= instanceof
== !=
&
^
|
&&
||
? :
= += -= *= /= %= >>= <<= >>>= &= ^= |=

приоритет

высокий

низкий

Слайд 28

Операторы сравнения примитивных числовых типов > и >= и == –

Операторы сравнения примитивных числовых типов

> и < – строгое сравнение
>= и

<= – нестрогое сравнение
== – определение равенства
!= – определение неравенства
Результат – логическое значение: true или false
Сравнение проводится в наиболее широком типе из типов операндов
Слайд 29

Операторы присваивания примитивных типов = – простое присваивание Тип выражения справа

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

= – простое присваивание
Тип выражения справа должен допускать

присваивание в переменную слева
+=, -=, *=, /=, %=, >>=, <<=, >>>=, &=, ^=, |=
Присваивание с действием
Тернарный оператор, x = x > 1 ? 2 : 1;
Типы операндов должны позволять совершить операцию
Слайд 30

Преобразование примитивных числовых типов Неявное преобразование типов Преобразование к более широкому

Преобразование примитивных числовых типов

Неявное преобразование типов Преобразование к более широкому типу
Явное преобразование

типов Преобразование к указанному типу с помощью оператора (type)expr

short s1 = 29;
int i1 = s1;
float f1 = i1;
int i2 = 14;
short s2 = (short) i2;
short s = -134;
byte b = (byte) s; // b = 122;

Слайд 31

Особенности преобразования примитивных числовых типов Более широкий тип тот, переменные которого

Особенности преобразования примитивных числовых типов

Более широкий тип тот, переменные которого могут

принимать большее количество значений
Вещественные типы считаются шире целочисленных
Это, естественно, не так

int big = 1234567890;
float approx = big; // 1.23456794E9
System.out.println(big - (int)approx); // -46

Слайд 32

Операторы примитивного логического типа == – определение равенства != – определение

Операторы примитивного логического типа

== – определение равенства
!= – определение неравенства
! –

отрицание
& – логическое «и» (and)
| – логическое «или» (or)
^ – логическое «исключающее или» (xor)
&& – условное «и»
(может не вычислять второй операнд)
|| – условное «или»
(может не вычислять второй операнд)
? : – оператор с условием 
+ – конкатенация со строкой
Слайд 33

Классы и объекты Класс – это описание объектов со схожей структурой

Классы и объекты

Класс – это описание объектов со схожей структурой и

поведением (шаблон)
Объект – экземпляр некоторого класса, или экземпляр массива
Объектов имеющего класса может быть много, а может не быть вовсе
Создание объектов происходит путем вызова конструктора класса (new)
Слайд 34

Пример класса public class Employee { private String name; private String

Пример класса

public class Employee {
private String name;
private String position;

private float salary;
public Employee(String n) {
name = n;
}
public Employee(String n, String p) {
name = n;
position = p;
}
...
}
Слайд 35

Примитивные и ссылочные типы данных Переменные ссылочного типа хранят ссылку на

Примитивные и ссылочные типы данных

Переменные ссылочного типа хранят ссылку на объект

или null
При присваиваниях происходит копирование значений ссылок

MyGadget m1 = new MyGadget("object 1");
MyGadget m2 = m1;
m1.name = "object 2";
System.out.println(m2.name); //а тут?

Слайд 36

Примитивные и ссылочные типы данных Переменные ссылочного типа хранят ссылку на

Примитивные и ссылочные типы данных

Переменные ссылочного типа хранят ссылку на объект

или null
При присваиваниях происходит копирование значений ссылок

MyGadget m1 = new MyGadget("object 1");
MyGadget m2 = m1;
m1 = new MyGadget("object 2");
System.out.println(m2.name); //а тут?

Слайд 37

Ссылки и объекты Доступ к объектам происходит по ссылкам-"безопасным указателям" на

Ссылки и объекты

Доступ к объектам происходит по ссылкам-"безопасным указателям" на объект
Допускается

несколько ссылок на один и тот же объект
Допускается отсутствие ссылок на объект
Соответствие типа объекта по ссылке контролируется (на этапе компиляции)
Слайд 38

Операторы ссылочных типов new – создание объекта класса (вызов конструктора) =

Операторы ссылочных типов

new – создание объекта класса (вызов конструктора)
= – присвоение

ссылки
Тип выражения справа должен допускать присвоение в тип переменной слева
== и != – сравнение ссылок
Сравниваются только ссылки, а не состояние объектов!
Слайд 39

Операторы ссылочных типов . – разыменование ссылки reference.method() reference.field () –

Операторы ссылочных типов

. – разыменование ссылки
reference.method()
reference.field
() – вызов метода
У любого объекта

можно вызвать методы, объявленные в классе Object
Слайд 40

Сравнение объектов по ссылке Операторы == и != для ссылочных типов

Сравнение объектов по ссылке

Операторы == и != для ссылочных типов сравнивают

не состояния объектов, а значения ссылок

Place p1 = new Place("Good Cafe");
Place p2 = p1;
Place p3 = new Place("Good Cafe");
System.out.println(p1 == p2); //true
System.out.println(p1 == p3); //false

Слайд 41

Сравнение объектов по ссылке Если при сравнении один из аргументов равен

Сравнение объектов по ссылке

Если при сравнении один из аргументов равен null,

то результат равен false
Если оба аргумента сравнения равны null, то результат сравнения равен true

Place p1 = new Place("Good Cafe");
Place p2 = null;
Place p3 = null;
System.out.println(p1 == p2); // false
System.out.println(p2 == p3); // true

Слайд 42

Сравнение объектов по значению Метод equals(Object o), доступный для любого объекта

Сравнение объектов по значению

Метод equals(Object o), доступный для любого объекта
Ссылочные величины

можно складывать со строкой (вызов toString() объекта)
Если ссылка равна null, то к строке добавляется текст "null"

String s = "a string";
s = s + " line"
System.out.println(s.equals("a string line"));

Слайд 43

Преобразование ссылочных типов Преобразование типа возможно, только если контракт целевого типа

Преобразование ссылочных типов

Преобразование типа возможно, только если контракт целевого типа является

частью контракта приводимого типа
Более широким считается тип, переменные которого могут принимать большее количество значений. Родительский тип считается более общим, чем дочерний.
Неявное преобразование типов – преобразование от более узкого к более широкому
Явное преобразование типов – преобразование от более широкого к более узкому с помощью оператора явного преобразования (type)expr
Слайд 44

Преобразование и проверка ссылочных типов Если явное преобразование типов невозможно, возникает

Преобразование и проверка ссылочных типов

Если явное преобразование типов невозможно, возникает ошибка

java.lang.ClassCastException
Соответствие типа можно проверить с помощью оператора instanceof, возвращающего true, если тип применим к объекту и false, если нет

Integer i = new Integer(5);
Object o = i;
i = (Integer) o;

Слайд 45

Преобразование и проверка ссылочных типов Integer i = new Integer(5); Object

Преобразование и проверка ссылочных типов

Integer i = new Integer(5);
Object o =

i;
if (o instanceof Integer) {
i = (Integer) o;
...
}
else { ... }

Оператор instanceof не позволяет определить реальный тип объекта, а лишь проверяет объект на совместимость с указанным типом

Слайд 46

Оператор ветвления Формат: ? : double factor = (a > b)

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

Формат: <логическое выражение> ? <значение 1> : <значение 2>

double factor =

(a > b) ? 1 : 0.7;

Если логическое выражение истинно, возвращается значение второго операнда, а если ложно – третьего операнда
Типы второго и третьего операндов должны быть «совместимы»
Оператор можно применять в выражениях присваивания вместо инструкции ветвления

Слайд 47

Оператор ветвления boolean flag = ...; ... factor = flag ?

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

boolean flag = ...;
...
factor = flag ? 1 : 0.7;
/*
if

(flag)
factor = 1;
else
factor = 0.7;
*/
Слайд 48

Работа со строками Для работы со строками существуют специальные классы String

Работа со строками

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

StringBuffer (StringBuilder с Java5)
Каждый строковый литерал порождает экземпляр класса String
Значение любого типа может быть приведено к строке
Если хотя бы один из операндов оператора + является ссылкой на строку, то остальные операнды также приводятся к строке, а оператор трактуется как конкатенация строк
Слайд 49

Массивы Массив – упорядоченный набор элементов одного типа Элементами могут быть

Массивы

Массив – упорядоченный набор элементов одного типа
Элементами могут быть значения простых

и ссылочных типов
Массивы сами по себе являются объектами и наследуют от класса Object
Доступ к элементам по целочисленному индексу с помощью оператора []
Слайд 50

Объявление одномерных массивов Объявление, инициализация, заполнение Способ «3 в 1» int

Объявление одномерных массивов

Объявление, инициализация, заполнение
Способ «3 в 1»

int array1[], justIntVariable =

0;
int[] array2;
array2 = new int[20];
for (int i = 0; i < array2.length; i++)
array2[i] = 1000;

byte[] someBytes = {0, 2, 4, 8, 16, 32};
someMethod(new long[] {1, 2, 3, 4, 5});

Слайд 51

Работа с одномерными массивами Форма объявления ссылки на массив с квадратными

Работа с одномерными массивами

Форма объявления ссылки на массив с квадратными скобками

после типа элемента является более предпочтительной
Объект массива создается с помощью оператора new
Массив при этом заполняется значениями по умолчанию для типа его элементов (0, false или null)
Нумерация в массивах начинается с 0
Длина массива хранится в публичном неизменяемом поле length
Изменить длину массива после создания его объекта нельзя
Слайд 52

Многомерные массивы Состоят из одномерных массивов, элементами которых являются ссылки на

Многомерные массивы

Состоят из одномерных массивов, элементами которых являются ссылки на массивы

меньшей размерности
При создании объекта необязательно указывать все размерности
Массив необязательно должен быть «прямоугольным»
Слайд 53

Многомерные массивы // Автоматическая int[][] twoDimArr = new int[10][5]; // Вручную

Многомерные массивы

// Автоматическая
int[][] twoDimArr = new int[10][5];
// Вручную
int[][] twoDimArr = new

int[10][];
for (int i = 0; i < 10; i++)
twoDimArr[i] = new int[i];
// Явно
int[][] arr3 = { {0}, {0, 1}, {0, 2, 4} };
Слайд 54

Виды инструкций Выражения присваивания Префиксные и постфиксные формы выражений с операторами

Виды инструкций

Выражения присваивания
Префиксные и постфиксные формы выражений с операторами инкремента и

декремента
Конструкции вызова методов
Выражения создания объектов
Составные инструкции
Управляющие порядком вычислений
Слайд 55

Блок Составная инструкция Может использоваться в любом месте, где допускается инструкция

Блок

Составная инструкция
Может использоваться в любом месте, где допускается инструкция
Определяет область видимости

локальных переменных: объявленная внутри блока переменная не видна за его пределами

int a = 5;
int b = 10;
{
int c = a + b;
int d = a – b;
}

Слайд 56

Ветвление Полная форма Неполная форма else относится к ближайшему выражению if,

Ветвление

Полная форма
Неполная форма
else относится к ближайшему выражению if, поэтому настоятельно рекомендуется

использование блоков инструкций

if (ЛогическоеВыражение)
Инструкция1
else
Инструкция2

if (ЛогическоеВыражение)
Инструкция1

Слайд 57

Блок переключателей Для типов char, byte, short, int Выполняются инструкции, расположенные

Блок переключателей

Для типов char, byte, short, int
Выполняются инструкции, расположенные за меткой

case, предложение которой совпало со значением параметра блока переключателей

switch (ЦелочисленноеВыражение) {
case n: Инструкции
case m: Инструкции
...
default: Инструкции
}

Слайд 58

Блок переключателей Если ни одно из предложений не подошло, выполняются инструкции,

Блок переключателей

Если ни одно из предложений не подошло, выполняются инструкции, расположенные

за меткой default
Метка default является необязательной
Метка case или default не служит признаком завершения блока переключателей
Команда break передает управление первой инструкции, следующей за блоком переключателей
Слайд 59

Условные циклы while Форма с предусловием Выполняется пока условие истинно Если

Условные циклы while

Форма с предусловием
Выполняется пока условие истинно
Если при входе в

цикл условие ложно, цикл не выполняется
Форма с постусловием
Выполняется пока условие истинно
При первом входе в цикл проверка условия не производится

while (ЛогическоеВыражение)
Инструкция

do
Инструкция
while (ЛогическоеВыражение);

Слайд 60

Цикл с предусловием for Формально цикл for в Java не является

Цикл с предусловием for

Формально цикл for в Java не является циклом

со счетчиком
Общий синтаксис
Все секции заголовка являются необязательными
Тело также может быть пустым

for(СекцияИнициализации; ЛогическоеВыражение; СекцияИзменения)
Инструкция

for( ; ; );

Слайд 61

Секции цикла for Секции инициализации и изменения могут быть представлены списком

Секции цикла for

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

разделенных запятой
Допустимо объявление переменных в секции инициализации

for (i = 0, j = 50; j >= 0; i++, j--) {
//...
}

for (int i = 0, j = 50; j >= 0; i++, j--) {
//...
}

Слайд 62

Объявление переменных в цикле for При инициализации переменных различных типов они

Объявление переменных в цикле for

При инициализации переменных различных типов они не должны

объявляться внутри заголовка

for (int i = 0, Cell node = head;
i < MAX && node != null;
i++, node = node.next) {
//...
}

int i; Cell node;
for (i = 0, node = head;
i < MAX && node != null;
i++, node = node.next) {
//...
}

Слайд 63

Работа с метками Метка метка: Инструкция Оператора goto в Java нет!!!

Работа с метками

Метка метка: Инструкция
Оператора goto в Java нет!!!
Метками можно помечать блоки

инструкций и циклы
Обращаться к меткам разрешено только с помощью команд break и continue
Слайд 64

break Применяется для завершения выполнения кода блока инструкций Завершение текущего блока

break

Применяется для завершения выполнения кода блока инструкций
Завершение текущего блока (безымянная форма) break;
Завершение

указанного блока (именованная форма) break метка;
Завершить блок, который сейчас не выполняется, нельзя!
Слайд 65

private float[][] matrix; public boolean workOnFlag(float flag) { int y, x;

private float[][] matrix;
public boolean workOnFlag(float flag) {
int y, x;
boolean

found = false;
search:
for (y = 0; y < matrix.length; y++) {
for (x = 0; x < matrix[y].length; x++) {
if (matrix[y][x] == flag) {
found = true;
break search;
}
}
}
//...
}

break

Слайд 66

continue Применяется только в контексте циклических конструкций Производит передачу управления в

continue

Применяется только в контексте циклических конструкций
Производит передачу управления в конец тела

цикла
Завершение витка текущего цикла (безымянная форма) continue;
Завершение витка указанного цикла (именованная форма) continue метка;
Завершить виток цикла, который сейчас не выполняется, нельзя!
Слайд 67

continue static void doubleUp(int[][] matrix) { int order = matrix.length; column:

continue

static void doubleUp(int[][] matrix) {
int order = matrix.length;
column:
for

(int i = 0; i < order; i++) {
for (int j = 0; j < order; j++) {
matrix[i][j] = matrix[j][i] =
matrix[i][j] * 2;
if (i == j)
continue column;
}
}
}
Слайд 68

Возврат из метода Инструкция return прекращает выполнение метода и возвращает его

Возврат из метода

Инструкция return прекращает выполнение метода и возвращает его результат
С

возвращаемым значением return value;
Значение должно быть приводимо к типу, возвращаемому методом
Без возвращаемого значения return;
методы void
конструкторы
Слайд 69

Спасибо за внимание!

Спасибо за внимание!