In diesem Artikel geht es hauptsächlich um den eigentlichen Kampf gegen das neue Datum und Zeit API in Java8. Die neuen Date- und Time-Klassen sind das Ergebnis lang erwarteter Anfragen der Java-Entwickler-Community. Die Date-Klasse, die vor Java8 existierte, wurde immer kritisiert, und viele Leute entscheiden sich für die Verwendung der Datumsbibliothek Joda-Time eines Drittanbieters. Die Datums- und Uhrzeit-API in Java8 wurde vom Autor von jodatime entwickelt und implementiert alle Inhalte von JSR310. Diese neuen APIs befinden sich im Paket java.time.
Da Joda-Time und Date4j von Drittanbietern bereits leistungsstark genug sind, warum muss Java8 sie dann erneut implementieren? Ein Grund dafür ist, dass diese Drittanbieter-Bibliotheken wie der Standard Kompatibilitätsprobleme haben JSF-Datum Der Konverter ist nicht mit der Joda-Time-API kompatibel. Sie müssen bei jeder Verwendung einen eigenen Konverter schreiben. Bei JSR310 sind alle seine Bestimmungen in Java8 implementiert.
Die Designprinzipien hinter der neuen Date- und Time-Klasse:
Unveränderliche Klasse
Vor Java8, die Date-Klasse war Es ist eine veränderliche Klasse. Wenn wir es in einer Multithread-Umgebung verwenden, sollten Programmierer bestätigen, dass das Date-Objekt threadsicher ist. Die Datums- und Uhrzeit-APIs von Java 8 stellen threadsichere, unveränderliche Klassen bereit. Programmierer müssen sich nicht mit Parallelitätsproblemen befassen.
DomäneModellGesteuerterDesignansatz
Die neuen Datums- und Zeitkategorien folgen „Domain Driven Design“. Für Entwickler ist es einfach, die Funktionalität von Methoden und Klassen zu verstehen.
Als nächstes werfen wir einen Blick auf die neue Datums- und Uhrzeit-API:
java.time.LocalDate:
LocalDate liefert nur das Datum, aber keine Uhrzeit Information. Es ist unveränderlich und threadsicher.
package org.smarttechie; import java.time.LocalDate; import java.time.temporal.ChronoUnit; /** * This class demonstrates JAVA 8 data and time API * @author Siva Prasad Rao Janapati * */ public class DateTimeDemonstration { /** * @param args */ public static void main(String[] args) { //Create date LocalDate localDate = LocalDate.now(); System.out.println("The local date is :: " + localDate); //Find the length of the month. That is, how many days are there for this month. System.out.println("The number of days available for this month:: " + localDate.lengthOfMonth()); //Know the month name System.out.println("What is the month name? :: " + localDate.getMonth().name()); //add 2 days to the today's date. System.out.println(localDate.plus(2, ChronoUnit.DAYS)); //substract 2 days from today System.out.println(localDate.minus(2, ChronoUnit.DAYS)); //Convert the string to date System.out.println(localDate.parse("2017-04-07")); } }
java.time.LocalTime:
LocalTime stellt nur Zeit-, aber keine Datumsinformationen bereit. Es ist eine unveränderliche Klasse und Thread-sicher.
package org.smarttechie; import java.time.LocalTime; import java.time.temporal.ChronoUnit; /** * This class demonstrates JAVA 8 data and time API * @author Siva Prasad Rao Janapati * */ public class DateTimeDemonstration { /** * @param args */ public static void main(String[] args) { //Get local time LocalTime localTime = LocalTime.now(); System.out.println(localTime); //Get the hour of the day System.out.println("The hour of the day:: " + localTime.getHour()); //add 2 hours to the time. System.out.println(localTime.plus(2, ChronoUnit.HOURS)); //add 6 minutes to the time. System.out.println(localTime.plusMinutes(6)); //substract 2 hours from current time System.out.println(localTime.minus(2, ChronoUnit.HOURS)); } }
java.time.LocalDateTime:
LocalDateTime stellt Zeit- und Datumsinformationen bereit, es ist eine unveränderliche Klasse und Thread-sicher
package orr.smarttechie; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; /** * This class demonstrates JAVA 8 data and time API * @author Siva Prasad Rao Janapati * */ public class DateTimeDemonstration { /** * @param args */ public static void main(String[] args) { //Get LocalDateTime object LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(localDateTime); //Find the length of month. That is, how many days are there for this month. System.out.println("The number of days available for this month:: " + localDateTime.getMonth().length(true)); //Know the month name System.out.println("What is the month name? :: " + localDateTime.getMonth().name()); //add 2 days to today's date. System.out.println(localDateTime.plus(2, ChronoUnit.DAYS)); //substract 2 days from today System.out.println(localDateTime.minus(2, ChronoUnit.DAYS)); } }
java.time.Year:
Year liefert Jahresinformationen, ist unveränderlich und Thread-sicher.
package orr.smarttechie; import java.time.Year; import java.time.temporal.ChronoUnit; /** * This class demonstrates JAVA 8 data and time API * @author Siva Prasad Rao Janapati * */ public class DateTimeDemonstration { /** * @param args */ public static void main(String[] args) { //Get year Year year = Year.now(); System.out.println("Year ::" + year); //know the year is leap year or not System.out.println("Is year[" +year+"] leap year?"+ year.isLeap()); } }
java.time.Duration:
Die Dauer wird verwendet, um zu berechnen, wie viele Sekunden und Millisekunden zwischen zwei angegebenen Daten liegen. Dies ist nicht möglich Thread-sicher
java.time.Period:
Period wird verwendet, um zu berechnen, wie viele Tage, Monate oder mehr zwischen zwei angegebenen Daten liegen. Wie viele Jahre sind es ist unveränderlich, klassen- und threadsicher
package orr.smarttechie; import java.time.LocalDate; import java.time.Period; import java.time.temporal.ChronoUnit; /** * This class demonstrates JAVA 8 data and time API * @author Siva Prasad Rao Janapati * */ public class DateTimeDemonstration { /** * @param args */ public static void main(String[] args) { LocalDate localDate = LocalDate.now(); Period period = Period.between(localDate, localDate.plus(2, ChronoUnit.DAYS)); System.out.println(period.getDays()); } }
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die neuen Datums- und Uhrzeitklassen in Java 8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

JvmmanagesGecollectionAcrossplattformseffektivyusingagenerationalApproachandaDaptoosandhardwaredFerces

Java -Code kann auf verschiedenen Betriebssystemen ohne Änderung ausgeführt werden, da Javas "einmal schreiben, überall rennen" von Java Virtual Machine (JVM) implementiert wird. Als Vermittler zwischen dem kompilierten Java -Bytecode und dem Betriebssystem übersetzt das JVM die Bytecode in bestimmte Maschinenanweisungen, um sicherzustellen, dass das Programm mit installiertem JVM unabhängig auf jeder Plattform ausführen kann.

Die Zusammenstellung und Ausführung von Java -Programmen erreicht die Unabhängigkeit der Plattform über Bytecode und JVM. 1) Schreiben Sie Java -Quellcode und kompilieren Sie ihn in Bytecode. 2) Verwenden Sie JVM, um Bytecode auf einer beliebigen Plattform auszuführen, um sicherzustellen, dass der Code über Plattformen hinweg ausgeführt wird.

Die Java -Leistung hängt eng mit der Hardwarearchitektur zusammen, und das Verständnis dieser Beziehung kann die Programmierfunktionen erheblich verbessern. 1) Der JVM wandelt Java -Bytecode durch JIT -Zusammenstellung in Maschinenanweisungen um, die von der CPU -Architektur beeinflusst werden. 2) Speicherverwaltung und Müllsammlung werden von RAM und Speicherbusgeschwindigkeit beeinflusst. 3) Vorhersage von Cache und Branche optimieren Sie die Ausführung der Java -Code. 4) Multi-Threading- und Parallelverarbeitung verbessern die Leistung bei Multi-Core-Systemen.

Die Verwendung von nativen Bibliotheken wird die Unabhängigkeit der Java -Plattform zerstören, da diese Bibliotheken für jedes Betriebssystem separat kompiliert werden müssen. 1) Die native Bibliothek interagiert mit Java über JNI und bietet Funktionen, die nicht direkt von Java implementiert werden können. 2) Die Verwendung native Bibliotheken erhöht die Projektkomplexität und erfordert das Verwalten von Bibliotheksdateien für verschiedene Plattformen. 3) Obwohl native Bibliotheken die Leistung verbessern können, sollten sie mit Vorsicht verwendet und plattformübergreifende Tests durchgeführt werden.

JVM übernimmt das Betriebssystem -API -Unterschiede über JavanativeInterface (JNI) und Java Standard Library: 1. JNI ermöglicht Java -Code, lokalen Code aufzurufen und direkt mit der API des Betriebssystems zu interagieren. 2. Die Java -Standardbibliothek bietet eine einheitliche API, die intern auf verschiedene Betriebssystem -APIs zugeordnet ist, um sicherzustellen, dass der Code über Plattformen hinweg ausgeführt wird.

Modularitydoesnotdirectentafectjava'SPlatformIndeIndeNependence.java'splattformIndependenceSmainusted bythejvm, ButmodularityIncesces Applicationsstructureandmanagement, indirekte ImpactingPlatformIndependenz.1) Einsatz und Verteilung der Einführung und Verteilung von Indirekten

BytecodeInjavaistheIntermediateRepresentationThatenableSlattformindependenz.1) JavacodeiscompiledIntobyteCodestoredIn.ClassFiles.2) thejvMinterPretSorCompilestheSByteCodeIntomachineCodeatruntime, sobyTeFetorcodornonunononeyTeAnfulTeMeByteful, somitSameDesamful, sombesambytefuls, sombesfile, sombesambyfulyfulyfulTecodorneunononeNononignaThaThesAdful, sombesambyful, somitsame, somit


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion
