JavaRush /Blog Jawa /Random-JV /Pandhuan Jawa 8. Bagean 2.
ramhead
tingkat

Pandhuan Jawa 8. Bagean 2.

Diterbitake ing grup

Tanggal API

Java 8 ngemot tanggal lan wektu API anyar ing paket java.time. API Tanggal anyar bisa dibandhingake karo perpustakaan Joda-Time , nanging ora padha. Conto ing ngisor iki bakal nyakup bagean paling penting saka API anyar.
jam
Jam menehi akses menyang tanggal lan wektu saiki. Jam weruh zona wektu lan mulane bisa digunakake tinimbang System.currentTimeMillis () kanggo bali wektu saiki ing milliseconds. Presisi wektu kaya iki uga diwakili dening kelas Instan . Instan bisa digunakake kanggo nggawe obyek java.util.Date sing diwarisake . Clock clock = Clock.systemDefaultZone(); long millis = clock.millis(); Instant instant = clock.instant(); Date legacyDate = Date.from(instant); // legacy java.util.Date
Zona wektu
Zona wektu diwakili dening kelas abstrak ZoneId . Bisa diakses kanthi gampang nggunakake metode pabrik statistik. Zona wektu nemtokake offset sing penting kanggo ngowahi antarane tanggal lan wektu langsung lan lokal. System.out.println(ZoneId.getAvailableZoneIds()); // prints all available timezone ids ZoneId zone1 = ZoneId.of("Europe/Berlin"); ZoneId zone2 = ZoneId.of("Brazil/East"); System.out.println(zone1.getRules()); System.out.println(zone2.getRules()); // ZoneRules[currentStandardOffset=+01:00] // ZoneRules[currentStandardOffset=-03:00]
Wektu Lokal
LocalTime nampilake wektu tanpa zona wektu, contone 17:30:15. Conto ing ngisor iki nggawe rong obyek wektu lokal kanggo zona wektu sing ditemtokake ing ndhuwur. Kita banjur mbandhingake rong obyek kasebut lan ngetung prabédan ing jam lan menit ing antarane. LocalTime now1 = LocalTime.now(zone1); LocalTime now2 = LocalTime.now(zone2); System.out.println(now1.isBefore(now2)); // false long hoursBetween = ChronoUnit.HOURS.between(now1, now2); long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); System.out.println(hoursBetween); // -3 System.out.println(minutesBetween); // -239 LocalTime dilengkapi macem-macem cara pabrik kanggo nggawe instantiation luwih gampang, kalebu parsing string. LocalTime late = LocalTime.of(23, 59, 59); System.out.println(late); // 23:59:59 DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedTime(FormatStyle.SHORT) .withLocale(Locale.GERMAN); LocalTime leetTime = LocalTime.parse("13:37", germanFormatter); System.out.println(leetTime); // 13:37
LocalDate
LocalDate nampilake tanggal tartamtu, contone 2014-03-11. Instance ora bisa diganti lan bisa digunakake kanthi cara sing padha karo LocalTime. Conto nuduhake carane ngetung tanggal anyar kanthi nambah utawa nyuda dina, sasi utawa taun. Elinga yen saben operasi ing obyek ngasilake obyek anyar. LocalDate today = LocalDate.now(); LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); LocalDate yesterday = tomorrow.minusDays(2); LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); System.out.println(dayOfWeek); // FRIDAY Parsing LocalDate saka string gampang kaya parsing LocalTime: DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedDate(FormatStyle.MEDIUM) .withLocale(Locale.GERMAN); LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); System.out.println(xmas); // 2014-12-24
LocalDateTime
LocalDateTime nampilake datetime. Iki minangka kombinasi tanggal lan wektu sing diwenehake ing ndhuwur, ing siji salinan. Instance LocalDateTime ora bisa diganti lan bisa digunakake kanthi cara sing padha karo LocalTime lan LocalDate. Kita bisa nggunakake metode kanggo njupuk nilai properti conto sing dibutuhake: LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); System.out.println(dayOfWeek); // WEDNESDAY Month month = sylvester.getMonth(); System.out.println(month); // DECEMBER long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); System.out.println(minuteOfDay); // 1439 Bebarengan karo informasi zona wektu tambahan, conto bisa diowahi dadi instan. Instant bisa gampang diowahi menyang jinis lawas warisan saka java.util.Date. Instant instant = sylvester .atZone(ZoneId.systemDefault()) .toInstant(); Date legacyDate = Date.from(instant); System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014 Format tanggal-wektu dianggo kanthi cara sing padha karo format tanggal utawa wektu. Tinimbang nggunakake format tanggal sing wis ditemtokake, kita bisa nggunakake format sing ditetepake kanthi manual. DateTimeFormatter formatter = DateTimeFormatter .ofPattern("MMM dd, yyyy - HH:mm"); LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); String string = formatter.format(parsed); System.out.println(string); // Nov 03, 2014 - 07:13 Ora kaya java.text.NumberFormat, DateTimeFormatter anyar ora bisa diganti lan aman. Kanggo informasi luwih lengkap babagan sintaks kanggo format nulis, maca kene .

Anotasi

Anotasi ing Jawa 8 bisa diulang. Ayo goleki conto kanggo nggambarake cara kerjane. Kanggo miwiti, kita bakal nemtokake pambungkus anotasi sing nyimpen macem-macem anotasi sing bener: @interface Hints { Hint[] value(); } @Repeatable(Hints.class) @interface Hint { String value(); } Java 8 ngidini kita nggunakake macem-macem anotasi saka jinis sing padha kanthi nyatakake anotasi @Repeatable. Opsi 1: Nggunakake anotasi wadah (sekolah lawas) (Jawa 8 ngidini kita nggunakake macem-macem anotasi saka jinis sing padha kanthi nyatakake anotasi @Repeatable .) Pilihan 1: Nggunakake wadhah anotasi (sekolah lawas) @Hints({@Hint("hint1"), @Hint("hint2")}) class Person {} Pilihan 2: Nggunakake anotasi sing bisa diulang ( fitur anyar) @Hint("hint1") @Hint("hint2") class Person {} Nggunakake opsi loro, compiler java implisit nyetel @Hint anotasi. Iki penting kanggo maca informasi anotasi liwat refleksi. Hint hint = Person.class.getAnnotation(Hint.class); System.out.println(hint); // null Hints hints1 = Person.class.getAnnotation(Hints.class); System.out.println(hints1.value().length); // 2 Hint[] hints2 = Person.class.getAnnotationsByType(Hint.class); System.out.println(hints2.length); // 2 Sanajan kita durung ngumumake @Hints anotasi kanggo kelas Person , bisa diwaca nggunakake metode getAnnotation(Hints.class) . Nanging, cara sing luwih trep yaiku getAnnotationsByType , sing nyedhiyakake akses menyang kabeh anotasi nggunakake anotasi @Hint . Kajaba iku, panggunaan anotasi ing Jawa 8 ngembangake rong tujuan: @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) @interface MyAnnotation {}

Iki kabeh

Tutorial Pemrograman Java 8 Kula rampung. Yen sampeyan pengin sinau luwih lengkap babagan kabeh kelas anyar lan fitur API ing JDK 8, waca artikel sabanjure. Iki bakal mbantu sampeyan ngerti kabeh kelas anyar lan fitur sing didhelikake ing JDK 8, kayata Arrays.parallelSort , StampedLock , lan CompletableFuture .
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION