Quelles sont les nouvelles fonctionnalités de java14
1. Changer d'expression
Dans les versions précédentes, changer d'expression n'était qu'une fonctionnalité "d'aperçu". Je voudrais vous rappeler que le but des fonctionnalités de l'étape « aperçu » est de recueillir des commentaires. Ces fonctionnalités peuvent changer à tout moment et, en fonction des résultats des commentaires, ces fonctionnalités peuvent même être supprimées, mais généralement toutes les fonctionnalités en aperçu. sera finalement corrigé en Java.
(Tutoriel recommandé : Programme de démarrage Java )
L'avantage de la nouvelle expression switch est qu'il n'y a plus de comportement de saut par défaut (fall-through), plus complet, et les expressions et combinaisons sont plus faciles à écrire, donc les bogues sont moins susceptibles de se produire. Par exemple, les expressions de commutation peuvent désormais utiliser la syntaxe des flèches, comme indiqué ci-dessous :
var log = switch (event) { case PLAY -> "User has triggered the play button"; case STOP, PAUSE -> "User needs a break"; default -> { String message = event.toString(); LocalDateTime now = LocalDateTime.now(); yield "Unknown event " + message + " logged on " + now; } };
2. Blocs de texte
L'une des fonctionnalités d'aperçu introduites dans Java 13 concerne les blocs de texte. . Avec les blocs de texte, les chaînes littérales multilignes sont faciles à écrire. Cette fonctionnalité obtient son deuxième aperçu dans Java 14, et il y a quelques changements. Par exemple, le formatage d'un texte multiligne peut nécessiter l'écriture de nombreuses opérations de concaténation de chaînes et de séquences d'échappement. Le code suivant montre un exemple HTML :
String html = "<HTML>" + "\n\t" + "<BODY>" + "\n\t\t" + "<H1>\"Java 14 is here!\"</H1>" + "\n\t" + "</BODY>" + "\n" + "</HTML>";
Avec les blocs de texte, ce processus peut être simplifié. Utilisez simplement des guillemets triples comme balises de début et de fin du bloc de texte, et vous pouvez écrire plus élégamment du code pour :
String html = """ <HTML> <BODY> <H1>"Java 14 is here!"</H1> </BODY> </HTML>""";
Les blocs de texte sont plus expressifs que les chaînes littérales ordinaires.
Java 14 introduit deux nouvelles séquences d'échappement. Tout d’abord, vous pouvez utiliser la nouvelle séquence d’échappement s pour représenter un espace. Deuxièmement, vous pouvez utiliser une barre oblique inverse pour éviter d'insérer un caractère de nouvelle ligne à la fin de la ligne. Cela permet de diviser facilement une longue ligne en plusieurs lignes dans un bloc de texte pour augmenter la lisibilité.
Par exemple, maintenant la façon d'écrire une chaîne multiligne est la suivante :
String literal = "Lorem ipsum dolor sit amet, consectetur adipiscing " + "elit, sed do eiusmod tempor incididunt ut labore " + "et dolore magna aliqua.";
En utilisant des séquences d'échappement dans des blocs de texte, elle peut être écrite comme ceci :
String text = """ Lorem ipsum dolor sit amet, consectetur adipiscing \ elit, sed do eiusmod tempor incididunt ut labore \ et dolore magna aliqua.\ """;
(Tutoriel vidéo recommandé :Tutoriel vidéo Java)
3. La correspondance de modèles d'instanceof
Java 14 introduit une fonctionnalité de prévisualisation, avec laquelle il n'est plus nécessaire. Écrivez du code qui passe d'abord par une instance de jugement, puis par une conversion forcée. Par exemple, le code suivant :
if (obj instanceof Group) { Group group = (Group) obj; // use group specific methods var entries = group.getEntries(); }
À l'aide de cette fonctionnalité d'aperçu, il peut être refactorisé en :
if (obj instanceof Group group) { var entries = group.getEntries(); }
Puisque la vérification conditionnelle nécessite que obj soit de type Groupe, pourquoi devez-vous inclure dans le code conditionnel comme le premier code ? Qu'en est-il de la spécification obj comme type de groupe dans le bloc ? Cela peut provoquer des erreurs.
Cette syntaxe plus concise peut éliminer la plupart des transtypages dans les programmes Java.
JEP 305 explique ce changement et donne un exemple tiré du livre de Joshua Bloch "Effective Java", démontrant les deux manières d'écrire équivalentes suivantes :
@Override public boolean equals(Object o) { return (o instanceof CaseInsensitiveString) && ((CaseInsensitiveString) o).s.equalsIgnoreCase(s); }
Ce paragraphe La CaseInsensitiveString redondante castée dans le code peut être supprimé et converti de la manière suivante :
@Override public boolean equals(Object o) { return (o instanceof CaseInsensitiveString cis) && cis.s.equalsIgnoreCase(s); }
Cette fonctionnalité d'aperçu vaut la peine d'être essayée car elle ouvre la porte à une correspondance de modèles plus générale. L'idée de la correspondance de modèles est de fournir une syntaxe pratique permettant au langage d'extraire des composants d'objets en fonction de conditions spécifiques. C'est exactement le cas d'utilisation de l'opérateur instanceof, puisque la condition est une vérification de type et que l'opération d'extraction nécessite d'appeler la méthode appropriée ou d'accéder à un champ spécifique.
En d'autres termes, cette fonction de prévisualisation n'est qu'un début. À l'avenir, cette fonction réduira certainement davantage la redondance du code, réduisant ainsi les risques de bugs.
4. Enregistrer
Une autre fonction de prévisualisation est l'enregistrement. Comme d'autres fonctions de prévisualisation introduites précédemment, cette fonction de prévisualisation suit également la tendance à réduire le code Java redondant et peut aider les développeurs à écrire un code plus précis. Record est principalement utilisé pour les classes dans des champs spécifiques. Sa fonction de déplacement consiste à stocker des données sans aucun comportement personnalisé.
Allons droit au but et prenons un exemple de la classe de domaine la plus simple : BankTransaction, qui représente une transaction et contient trois champs : date, montant et description. Il y a de nombreux aspects à prendre en compte lors de la définition d'une classe :
Constructeur, getter, méthode toString(), hashCode() et equals(). Le code de ces parties est généralement généré automatiquement par l'EDI et occupe une place. beaucoup d'espace. Voici la classe BankTransaction générée complète :
public class BankTransaction {private final LocalDate date; private final double amount; private final String description; public BankTransaction(final LocalDate date, final double amount, final String description) { this.date = date; this.amount = amount; this.description = description; } public LocalDate date() { return date; } public double amount() { return amount; } public String description() { return description; } @Override public String toString() { return "BankTransaction{" + "date=" + date + ", amount=" + amount + ", description='" + description + '\'' + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; BankTransaction that = (BankTransaction) o; return Double.compare(that.amount, amount) == 0 && date.equals(that.date) && description.equals(that.description); } @Override public int hashCode() { return Objects.hash(date, amount, description); } }
Java 14 fournit un moyen de résoudre cette redondance et d'exprimer plus clairement le but : le seul but de cette classe est de rassembler des données. Record fournira des implémentations des méthodes equals, hashCode et toString. Par conséquent, la classe BankTransaction peut être refactorisée comme suit :
public record BankTransaction(LocalDate date,double amount, String description) {}
Grâce à l'enregistrement, vous pouvez obtenir "automatiquement" l'implémentation de equals, hashCode et toString, ainsi que les méthodes constructeur et getter.
Pour essayer cet exemple, vous devez compiler le fichier avec l'indicateur d'aperçu :
javac --enable-preview --release 14 Les champs de BankTransaction.javarecord sont implicitement définitifs. Par conséquent, les champs d'enregistrement ne peuvent pas être réaffectés. Mais il convient de noter que cela ne signifie pas que l'intégralité de l'enregistrement est immuable. Les objets stockés dans les champs peuvent être mutables.
5. NullPointerException
一些人认为,抛出NullPointerException异常应该当做新的“Hello World”程序来看待,因为NullPointerException是早晚会遇到的。玩笑归玩笑,这个异常的确会造成困扰,因为它经常出现在生产环境的日志中,会导致调试非常困难,因为它并不会显示原始的代码。例如,如下代码:
var name = user.getLocation().getCity().getName();
在Java 14之前,你可能会得到如下的错误:
Exception in thread "main" java.lang.NullPointerExceptionat NullPointerExample.main(NullPointerExample.java:5)
不幸的是,如果在第5行是一个包含了多个方法调用的赋值语句(如getLocation()和getCity()),那么任何一个都可能会返回null。实际上,变量user也可能是null。因此,无法判断是谁导致了NullPointerException。
在Java 14中,新的JVM特性可以显示更详细的诊断信息:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Location.getCity()" because the return value of "User.getLocation()" is nullat NullPointerExample.main(NullPointerExample.java:5)
该消息包含两个明确的组成部分:
后果:Location.getCity()无法被调用原因:User.getLocation()的返回值为null增强版本的诊断信息只有在使用下述标志运行Java时才有效:
-XX:+ShowCodeDetailsInExceptionMessages
下面是个例子:
java -XX:+ShowCodeDetailsInExceptionMessages NullPointerExample
在以后的版本中,该选项可能会成为默认。
这项改进不仅对于方法调用有效,其他可能会导致NullPointerException的地方也有效,包括字段访问、数组访问、赋值等。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tout le monde sait qu'il existe de nombreuses versions du système Win7, telles que la version Win7 Ultimate, la version Win7 Professional, la version Win7 Home, etc. De nombreux utilisateurs sont coincés entre la version Home et la version Ultimate et ne savent pas quelle version choisir. alors aujourd'hui, je vais vous parler des différences entre Win7 Family Meal et Win7 Ultimate. Jetons un coup d'œil. 1. Experience Different Home Basic Edition rend vos opérations quotidiennes plus rapides et plus simples et vous permet d'accéder plus rapidement et plus facilement à vos programmes et documents les plus fréquemment utilisés. Home Premium vous offre la meilleure expérience de divertissement, permettant de profiter et de partager facilement vos émissions de télévision, photos, vidéos et musiques préférées. L'Ultimate Edition intègre toutes les fonctions de chaque édition et possède toutes les fonctions de divertissement et fonctionnalités professionnelles de Windows 7 Home Premium.

Comprendre les fonctionnalités clés de SpringMVC : pour maîtriser ces concepts importants, des exemples de code spécifiques sont nécessaires. SpringMVC est un cadre de développement d'applications Web basé sur Java qui aide les développeurs à créer des structures flexibles et évolutives via le modèle architectural Model-View-Controller (MVC). application Web. Comprendre et maîtriser les fonctionnalités clés de SpringMVC nous permettra de développer et de gérer nos applications Web plus efficacement. Cet article présentera quelques concepts importants de SpringMVC

Avec le développement rapide d'Internet, les langages de programmation évoluent et se mettent à jour constamment. Parmi eux, le langage Go, en tant que langage de programmation open source, a attiré beaucoup d'attention ces dernières années. Le langage Go est conçu pour être simple, efficace, sûr et facile à développer et à déployer. Il présente les caractéristiques d'une concurrence élevée, d'une compilation rapide et d'une sécurité de la mémoire, ce qui le rend largement utilisé dans des domaines tels que le développement Web, le cloud computing et le big data. Cependant, il existe actuellement différentes versions du langage Go disponibles. Lors du choix d’une version linguistique Go appropriée, nous devons prendre en compte à la fois les exigences et les fonctionnalités. tête

Il n'y a pas de concept de classe au sens traditionnel dans Golang (langage Go), mais il fournit un type de données appelé structure, à travers lequel des fonctionnalités orientées objet similaires aux classes peuvent être obtenues. Dans cet article, nous expliquerons comment utiliser les structures pour implémenter des fonctionnalités orientées objet et fournirons des exemples de code concrets. Définition et utilisation des structures Examinons d'abord la définition et l'utilisation des structures. Dans Golang, les structures peuvent être définies via le mot-clé type, puis utilisées si nécessaire. Les structures peuvent contenir des attributs

Les trois caractéristiques de la 5G sont : 1. Haut débit ; dans les applications pratiques, la vitesse du réseau 5G est plus de 10 fois supérieure à celle du réseau 4G. 2. Faible latence : la latence du réseau 5G est d'environ plusieurs dizaines de millisecondes, ce qui est plus rapide que la vitesse de réaction humaine. 3. Une connexion étendue ; l’émergence du réseau 5G, combinée à d’autres technologies, créera une nouvelle scène de l’Internet des objets.

Les fonctions C++ ont les types suivants : fonctions simples, fonctions const, fonctions statiques et fonctions virtuelles ; les fonctionnalités incluent : les fonctions en ligne, les paramètres par défaut, les retours de référence et les fonctions surchargées. Par exemple, la fonction calculateArea utilise π pour calculer l'aire d'un cercle d'un rayon donné et la renvoie en sortie.

Les caractéristiques de Java sont : 1. Simple et facile à apprendre 2. Orienté objet, rendant le code plus réutilisable et maintenable 3. Indépendant de la plate-forme, capable de fonctionner sur différents systèmes d'exploitation 4. Gestion de la mémoire, via des déchets automatiques ; mécanisme de collecte Gérer la mémoire 5. Vérification de type forte, les variables doivent déclarer leur type avant utilisation 6. Sécurité, qui peut empêcher l'accès non autorisé et l'exécution de code malveillant 7. Prise en charge du multithread, qui peut améliorer les performances et la réactivité du programme ; 8. La gestion des exceptions peut éviter les plantages du programme ; 9. Un grand nombre de bibliothèques et de frameworks de développement ;

LinuxGem est un terme courant dans le domaine informatique, qui fait référence à des logiciels ou des applications qui fonctionnent bien sur le système d'exploitation Linux. Le système d'exploitation Linux lui-même est un système d'exploitation open source bénéficiant du soutien de nombreux développeurs et communautés. Il est donc facile de trouver des logiciels puissants et de haute qualité sous Linux. Cependant, même parmi tant de logiciels de haute qualité, il existe encore des logiciels appelés « LinuxGem », qui sont populaires sous Linux grâce à leur excellente conception, leurs performances et leurs fonctions.
