Какие нововведения появились в java 8? (10)
Какие новые классы для работы с датами появились в java 8? (9)
пакет java.time:
- LocalDate – дата без времени и временных зон;
- LocalTime – время без даты и временных зон;
- LocalDateTime – дата и время без временных зон;
- ZonedDateTime – дата и время с временной зоной;
- DateTimeFormatter – форматирует даты в строки и наоборот, только для классов java.time;
- Instant – колличество секунд с Unix epoch time (полночь 1 января 1970 UTC);
- Duration – продолжительность в секундах и наносекундах;
- Period – период времени в годах, месяцах и днях;
- TemporalAdjuster – корректировщик дат (к примеру, может получить дату следующего понедельника);
Какой класс появился в Java 8 для кодирования/декодирования данных?
Base64 - потокобезопасный класс, который реализует кодировщик и декодировщик данных.
Base64 содержит 6 основных методов:
**getEncoder()/getDecoder() ** - возвращает кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getUrlEncoder()/getUrlDecoder() - возвращает URL-safe кодировщик/декодировщик base64, соответствующий стандарту RFC 4648; getMimeEncoder()/getMimeDecoder() - возвращает MIME кодировщик/декодировщик, соответствующий стандарту RFC 2045.
Как создать Base64 кодировщик и декодировщик?
// Encode
String b64 = Base64.getEncoder().encodeToString(“input”.getBytes(“utf-8”)); //aW5wdXQ==
// Decode
new String(Base64.getDecoder().decode(“aW5wdXQ==”), “utf-8”); //input
Какие дополнительные методы для работы с ассоциативными массивами
(maps) появились в Java 8? (7)
map.forEach((k, v) -> System.out.println(v));map.putIfAbsent("a", "Aa");map.getOrDefault("a", "not found");map.compute("a", (k, v) -> String.valueOf(k).concat(v)); //["a", "aAa"] map.computeIfPresent("a", (k, v) -> k.concat(v));map.computeIfAbsent("a", k -> "A".concat(k)); //["a","Aa"]map.merge("a", "z", (value, newValue) -> value.concat(newValue)); //["a","Aaz"]Что такое LocalDateTime?
LocalDateTime объединяет вместе LocaleDate и LocalTime, содержит дату и время в календарной системе ISO-8601 без привязки к часовому поясу. Время хранится с точностью до наносекунды.
Содержит множество удобных методов, таких как plusMinutes, plusHours, isAfter, toSecondOfDay и т.д.
Что такое ZonedDateTime?
java.time.ZonedDateTime – улучшение java.util.Calendar, объект класса содержит LocalDateTime + ZoneId :
~~~
ZonedDateTime zdt = ZonedDateTime.of(LocalDateTime.now(), ZoneId.of(“America/New_York”));
~~~
Как получить текущую дату с использованием Date Time API из Java 8?
LocalDate.now();
Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с
использованием Date Time API?
LocalDate.now().plusWeeks(1);
LocalDate.now().plusMonths(1);
LocalDate.now().plusYears(1);
LocalDate.now().plus(1, ChronoUnit.DECADES);
Как получить следующий вторник, используя Date Time API?
LocalDate.now()
.with(TemporalAdjusters.next(DayOfWeek.TUESDAY));
Как получить вторую субботу текущего месяца, используя Date Time API?
LocalDate
.of(LocalDate.now().getYear(), LocalDate.now().getMonth(), 1)
.with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY))
.with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
Как получить текущее время с точностью до миллисекунд, используя Date
Time API?
new Date().toInstant();
Как получить текущее время по местному времени с точностью до
миллисекунд, используя Date Time API?
LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
Главные Инновации Java 9-11 (8)
1) Добавился коллектор ZGC, позволяющий работать с огромным heap (terrabytes…
2) var keyword
3) новый HTTP Client: HttpClient, HttpRequest, HttpResponse, WebSocket.
4)toArray() в Collections. / List / Set / Map - of() / copyOf
5) String : isBlank (), lines(), repeat (int), strip() / stripLeading / stripTrailing(),
6) Streams: takeWhile, dropWhile, iterate, flatMapping, filtering.
7) Optional: ifPresentOrElse, isEmpty()
8) Интерфейсы: private methods
Главные Инновации Java 12-17 (6)
1) Sealed Classes: новое средство для задания правил наследования: позволяет явно указывать классы, которые могут расширять или имплементировать данный:
public abstract sealed class Animal permits Cat, Dog {}
Преимущества: безопасность + информативность
2) Record: уменьшает бойлерплей при создании классов, в которых просто хранится информация:
record Point(int x, int y) { }; Point p = new Point(1, 2);
3) Pattern Matching in instanceof:
if (animal instanceof Cat cat) { System.out.println(cat.meow()); } : здесь создается переменная, что означает, что объект проверен на тип, закастован и доступен для использования в своём scope.
4) Switch Expressions:
- - введен оператор -> , что избавляет от return & break
- - блок кода после -> + yield keyword: -> { //some code; yield x;}
- - можно группировать константы в одном case
- - можно декларировать переменную как в instanceof
5) text blocks:
~~~
String block = “””
Multi-line text
with indentation
and “double quotes”!
“””;
~~~
6) улучшено описание NPE