Standard Tools

Основные разделы

Преобразования(приведение типов)

Восходящее

Восходящее - преобразование от потомка к предку. Будут потеряны все методы которые имел наследник.

Animal dog = new Dog();
//or
List<String> list = new ArrayList<>();
        

Нисходящее

Нисходящее - преобразование от предка к потомку. Должно указываться явно с помощью указания нового типа в скобках.

byte y = (byte) 100;
//or char to int - will be 65
(int) 'A'
        

if оператор

Синтаксис

if(условие) {
    тело(блок)
} else if  (условие) {
    тело(блок)
} else if (условие) {
    тело(блок)
} else {
    тело(блок)
}
        

ternary operator

Пример:

String a = true ? "true" : "false";
        

Switch

Default Syntax

Если не стоит break - выполниться несколько case.

Типы данных:byte, short, char, int, Byte, Short, Character, Integer, String, Enum.

switch(выражение) {
    case значение1, значение2 : команда; break;
    case значение3 : команда; break;
    case значение4 : команда; break;
    default : команда;
}
        

Совет!!! - если нужно использовать switch для нахождения переменной по ключи - нужно использовать HashMap.

New Syntax(since v.13)

Не нужен break.

switch(выражение) {
    case значение1, значение2 -> команда;
    case значение3 -> команда;
    case значение4 -> команда;
    default -> команда;
}
        

Возвращение значения

Можно возвращать значения через yield.

boolean result = switch (a) {
    case "1", "2" -> true;
    case "3" -> {
        System.out.println("get 3");
        yield false;
    }
    default -> throw new IllegalArgumentException("something is wrong!");
};
        

when

Можно использовать ограничение when

Stream.of(1, 20)
    .map(o ->
        switch (o) {
            case Integer i when i > 10 -> "Large Integer" + i;
            case Integer i -> "Normal Integer" + i;
            default -> "Unknown object";
            }
        )
        .forEach(System.out::println)
        

Pattern Matching fo switch(since v.21)

Можно находить тип переменной и объявлять ее. Обязательно добавлять default.

Stream.of(1, 20, 30L, "Hello")
    .map(o ->
        switch (o) {
            case Integer i -> i + 1;
            case Long l -> l + 1;
            String s -> s + " World";
            null -> "Null object";
            default -> "Unknown object";
            }
        )
        .forEach(System.out::println)
        

Циклы(loops)

while

while(условие) {
    тело(блок)
}
        

do while

do {
    тело(блок)
} while (условие)
        

for

for (инициализация; условие; инкремент/декремент) {
    System.out.println(i);
}
        
for (int i = 0, j = 0; i < 10; i++) {
    System.out.println(i);
}
        

foreach

Foreach(since v.5) - Применяется для массивов и коллекций используя итератор.

for (элемент коллекции: коллекция) {
    ...
}
        

Бесконечные циклы

while(true);
for(;;)
        

Text Blocks(since v.15)

Указание текста в том виде в котором он должен храниться(с переносами строки).

Синтаксис

String b ="""
1
2
3
""";
        

Вставка значений с строку

String a = "1";

"""
    Some parameter: %s
""".formatted(a);
        

Экранирование

Отмена новой строки(\)

"""1 \
   2
""";
        

Отмена новой строки(\s)

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

"""1      \s
   2
""";
        

Array

Переворот array

var array = new int[]{1, 2, 3, 4};
for (int i = 0; i < array.length / 2; i++) {
    int temp = array[i];
    array[i] = array[array.length - 1 - i];
    array[array.length - 1 - i] = temp;
}
        

Сравнение массивов

String[] myArray1 = {"HBase", "JavaFX", "OpenCV", "WebGL", "FlexBox"};
String[] myArray2 = {"JavaFX", "HBase", "OpenCV", "WebGL", "FlexBox"};
Arrays.sort(myArray1);
Arrays.sort(myArray2);
Boolean result = Arrays.equals(myArray1, myArray2);
        

Массивы в Java ковариантны.

String[] strings = new String[] {"a", "b", "c"};
Object[] arr = strings;