การส่งเสริม
มหาวิทยาลัยชวา
การเรียนรู้
หลักสูตร
งาน
แบบสำรวจและแบบทดสอบ
เกม
ช่วย
กำหนดการ
ฝึกงาน
ชุมชน
ผู้ใช้
ฟอรั่ม
แชท
บทความ
เรื่องราวความสำเร็จ
กิจกรรม
บทวิจารณ์
การสมัครรับข้อมูล
ธีมสว่าง
บทความ
  • บทวิจารณ์
  • เกี่ยวกับเรา
  • CS50
เริ่ม
เริ่มเรียนรู้
  • บทความ
  • ผู้เขียน
  • ทุกกลุ่ม
  • รายการบทความทั้งหมด
JavaRush /บล็อกจาวา /Random-TH /คู่มือจาวา 8 ส่วนที่ 2
ramhead
ระดับ
  • 28 February 2021
  • 294 views
  • 0 comments

คู่มือจาวา 8 ส่วนที่ 2

เผยแพร่ในกลุ่ม
Java-университет

วันที่ API

Java 8 มี API วันที่และเวลาใหม่ทั้งหมดในแพ็คเกจ java.time Date API ใหม่สามารถเทียบเคียงได้กับ ไลบรารี Joda-Timeอย่างไรก็ตามมันไม่เหมือนกัน ตัวอย่างต่อไปนี้จะครอบคลุมส่วนที่สำคัญที่สุดของ API ใหม่
นาฬิกา
นาฬิกาช่วยให้เข้าถึงวันที่และเวลาปัจจุบันได้ นาฬิกาทราบเขตเวลาและสามารถใช้แทน System.currentTimeMillis()เพื่อส่งคืนเวลาปัจจุบันในหน่วยมิลลิวินาที ความแม่นยำของเวลาประเภท นี้ยังแสดงด้วย คลาส Instant สามารถใช้เพื่อสร้าง วัตถุ java.util.Date ที่ สืบทอดมาได้ Clock clock = Clock.systemDefaultZone(); long millis = clock.millis(); Instant instant = clock.instant(); Date legacyDate = Date.from(instant); // legacy java.util.Date
โซนเวลา
เขต เวลา จะแสดงด้วยคลาสนามธรรม ZoneId สามารถเข้าถึงได้ง่ายโดยใช้วิธีทางสถิติจากโรงงาน เขตเวลากำหนดออฟเซ็ตที่มีความสำคัญสำหรับการแปลงระหว่างวันที่และเวลาแบบทันทีและแบบท้องถิ่น 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]
เวลาท้องถิ่น
LocalTime จะแสดงเวลาโดยไม่มีโซนเวลา เช่น 17:30:15 ตัวอย่างต่อไปนี้สร้างวัตถุเวลาท้องถิ่นสองรายการสำหรับโซนเวลาที่กำหนดไว้ข้างต้น จากนั้นเราจะเปรียบเทียบวัตถุทั้งสองและคำนวณความแตกต่างเป็นชั่วโมงและนาทีระหว่างวัตถุทั้งสอง 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 มาพร้อมกับวิธีการต่างๆ จากโรงงานเพื่อทำให้การสร้างอินสแตนซ์ง่ายขึ้น รวมถึงการแยกวิเคราะห์สตริง 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 จะแสดงวันที่เฉพาะ เช่น 2014-03-11 อินสแตนซ์ไม่เปลี่ยนรูปและทำงานคล้ายกับ LocalTime ตัวอย่างนี้สาธิตวิธีการคำนวณวันที่ใหม่โดยการบวกหรือลบวัน เดือน หรือปี โปรดทราบว่าทุกการดำเนินการบนออบเจ็กต์จะส่งคืนออบเจ็กต์ใหม่ 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 การแยกวิเคราะห์ LocalDate จากสตริงนั้นง่ายดายพอๆ กับการแยกวิเคราะห์ 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 แสดงวันที่และเวลา นี่เป็นการรวมวันที่และเวลาที่ระบุไว้ข้างต้นไว้ในสำเนาเดียว อินสแตนซ์ LocalDateTime ไม่สามารถเปลี่ยนรูปแบบได้และทำงานคล้ายกับ LocalTime และ LocalDate เราสามารถใช้วิธีการดึงค่าคุณสมบัติของอินสแตนซ์ที่เราต้องการ: 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 เมื่อใช้ร่วมกับข้อมูลโซนเวลาเพิ่มเติม อินสแตนซ์ก็สามารถแปลงเป็นแบบทันทีได้ Instants สามารถแปลงเป็นประเภทเก่าที่สืบทอดมาจาก 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 การจัดรูปแบบวันที่-เวลาทำงานในลักษณะเดียวกับการจัดรูปแบบวันที่หรือเวลา แทนที่จะใช้รูปแบบวันที่ที่กำหนดไว้ล่วงหน้า เราสามารถใช้รูปแบบที่กำหนดไว้ด้วยตนเองได้ 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 ไม่เหมือนกับ java.text.NumberFormat DateTimeFormatter ใหม่จะไม่เปลี่ยนรูปและปลอดภัยสำหรับเธรด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์สำหรับรูปแบบการเขียน โปรดอ่านที่ นี่

คำอธิบายประกอบ

คำอธิบายประกอบใน Java 8 สามารถทำซ้ำได้ ลองดูตัวอย่างเพื่อแสดงให้เห็นว่ามันทำงานอย่างไร ในการเริ่มต้น เราจะกำหนด wrapper คำอธิบายประกอบที่เก็บอาร์เรย์ของคำอธิบายประกอบที่ถูกต้อง: @interface Hints { Hint[] value(); } @Repeatable(Hints.class) @interface Hint { String value(); } Java 8 ช่วยให้เราใช้คำอธิบายประกอบหลายรายการที่เป็นประเภทเดียวกันโดยการประกาศคำอธิบายประกอบ @Repeatable ตัวเลือกที่ 1: การใช้คอนเทนเนอร์คำอธิบายประกอบ (แบบเก่า) (Java 8 ช่วยให้เราใช้คำอธิบายประกอบหลายรายการที่เป็นประเภทเดียวกันได้โดยการประกาศคำอธิบาย ประกอบ แบบ @Repeatable ) ตัวเลือกที่ 1: การใช้คอนเทนเนอร์คำอธิบายประกอบ (แบบเก่า) @Hints({@Hint("hint1"), @Hint("hint2")}) class Person {} ตัวเลือกที่ 2: การใช้คำอธิบายประกอบแบบทำซ้ำ ( คุณสมบัติใหม่) @Hint("hint1") @Hint("hint2") class Person {} การใช้อ็อพชันที่สอง คอมไพเลอร์ Java จะตั้งค่าคำอธิบายประกอบ @Hint โดยปริยาย นี่เป็นสิ่งสำคัญสำหรับการอ่านข้อมูลคำอธิบายประกอบผ่านการไตร่ตรอง 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 แม้ว่าเราจะไม่ได้ประกาศ คำอธิบายประกอบ @Hintsสำหรับ คลาส Personแต่ก็สามารถอ่านได้โดยใช้ เมธอด getAnnotation(Hints.class ) อย่างไรก็ตาม วิธีที่สะดวกกว่าคือ getAnnotationsByTypeซึ่งให้การเข้าถึงคำอธิบายประกอบทั้งหมดโดยใช้ คำอธิบาย ประกอบ @Hint นอกจากนี้ การใช้คำอธิบายประกอบใน Java 8 ยังขยายไปสู่วัตถุประสงค์สองประการ: @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) @interface MyAnnotation {}

นี่คือทั้งหมด

บทช่วยสอนการเขียนโปรแกรม Java 8 ของฉันเสร็จสมบูรณ์แล้ว หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคลาสใหม่และฟีเจอร์ API ใน JDK 8 โปรดอ่านบทความถัดไปของฉัน สิ่ง นี้ จะช่วยให้คุณเข้าใจคลาสใหม่และฟีเจอร์ที่ซ่อนอยู่ใน JDK 8 เช่น Arrays.parallelSort , StampedLockและ CompletableFuture
Python-университет
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
เรียนรู้
  • Курси програмування
  • การลงทะเบียน
  • หลักสูตรจาวา
  • ช่วยงาน
  • ราคา
  • โครงการเกม
ชุมชน
  • ผู้ใช้
  • บทความ
  • ฟอรั่ม
  • แชท
  • เรื่องราวความสำเร็จ
  • กิจกรรม
บริษัท
  • เกี่ยวกับเรา
  • ติดต่อ
  • บทวิจารณ์
  • คำถามที่พบบ่อย
  • สนับสนุน
JavaRush JavaRush เป็นหลักสูตรออนไลน์สำหรับการเรียนรู้การเขียนโปรแกรม Java ตั้งแต่เริ่มต้น หลักสูตรนี้เป็นวิธีที่สมบูรณ์แบบสำหรับการเรียนรู้ Java สำหรับผู้เริ่มต้น ประกอบด้วยงานมากกว่า 1,200 รายการพร้อมการตรวจสอบทันทีและขอบเขตที่จำเป็นของทฤษฎีพื้นฐานของ Java เพื่อช่วยให้คุณประสบความสำเร็จในด้านการศึกษา เราได้ใช้ชุดคุณลักษณะที่สร้างแรงบันดาลใจ: แบบทดสอบ โครงการเขียนโค้ด เนื้อหาเกี่ยวกับการเรียนรู้อย่างมีประสิทธิภาพ และอาชีพของนักพัฒนา Java
ตามเรามา
โปรแกรมเมอร์ไม่ได้เกิดมา © 2025 JavaRush
ดาวน์โหลดแอป
  • Google Play
  • App Store
Mastercard Visa
โปรแกรมเมอร์ไม่ได้เกิดมา © 2025 JavaRush