Восходящее - преобразование от потомка к предку. Будут потеряны все методы которые имел наследник.
Animal dog = new Dog();
//or
List<String> list = new ArrayList<>();
Нисходящее - преобразование от предка к потомку. Должно указываться явно с помощью указания нового типа в скобках.
byte y = (byte) 100;
//or char to int - will be 65
(int) 'A'
Синтаксис
if(условие) {
тело(блок)
} else if (условие) {
тело(блок)
} else if (условие) {
тело(блок)
} else {
тело(блок)
}
Пример:
String a = true ? "true" : "false";
Если не стоит 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.
Не нужен 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
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)
Можно находить тип переменной и объявлять ее. Обязательно добавлять 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)
while(условие) {
тело(блок)
}
do {
тело(блок)
} while (условие)
for (инициализация; условие; инкремент/декремент) {
System.out.println(i);
}
for (int i = 0, j = 0; i < 10; i++) {
System.out.println(i);
}
Foreach(since v.5) - Применяется для массивов и коллекций используя итератор.
for (элемент коллекции: коллекция) {
...
}
while(true);
for(;;)
Указание текста в том виде в котором он должен храниться(с переносами строки).
String b ="""
1
2
3
""";
Вставка значений с строку
String a = "1";
"""
Some parameter: %s
""".formatted(a);
"""1 \
2
""";
По умолчанию идет обрезка пробелов в каждой строке.
"""1 \s
2
""";
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;