Восходящее - преобразование от потомка к предку. Будут потеряны все методы которые имел наследник.
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;