Ce que j'ai recherché sur Java 6

Aperçu

Ma connaissance de Java s'est presque arrêtée à "1.4". Afin de changer la situation actuelle, je vais l'améliorer petit à petit.

Actuellement, l'application que j'ai principalement touchée en entreprise fonctionne à "5", À l'origine, c'était une application avant "1.4", et l'ancienne description demeure. Grâce à la mise à jour de la version de cette application, cette fois, je ne décrirai que ce que j'ai étudié sur les fonctions ajoutées dans "6".

Ce que j'ai regardé

Java6 comportait-il de nombreuses améliorations liées au bureau? Peut-être est-il utilisé dans une application que je touche au travail? J'ai étudié deux fonctions que je pensais.

Normalisation Unicode

La normalisation Unicode est désormais possible. Soudainement difficile ...

Référence: Normalisation Unicode

Il existe quatre types de normalisation Unicode:

type Aperçu
NFC Après décomposition basée sur l'équivalence canonique, resynthétiser sur la base de l'équivalence canonique
NFD Décomposition basée sur l'équivalence canonique
NFKC Après décomposition basée sur l'équivalence de compatibilité, resynthétiser en fonction de l'équivalence canonique
NFKD Décomposition basée sur l'équivalence de compatibilité

―― Qu'est-ce que la synthèse? Traitement qui convertit une chaîne de caractères combinée en un caractère synthétisé

――Qu'est-ce que le démontage? Traitement qui convertit les caractères synthétisés en chaînes de caractères combinées

Exemple de normalisation Unicode

System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFC));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFC));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFC));
System.out.println("4:Si-> " + Normalizer.normalize("Si", Normalizer.Form.NFC));
System.out.println("5:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFC));
System.out.println("6:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFC));
System.out.println("7:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFC));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFC));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFC));

NFC.jpg

System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFKC));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKC));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKC));
System.out.println("4:Si-> " + Normalizer.normalize("Si", Normalizer.Form.NFKC));
System.out.println("5:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFKC));
System.out.println("6:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFKC));
System.out.println("7:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFKC));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFKC));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFKC));

NFKC.jpg

System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFD));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFD));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFD));
System.out.println("4:Si-> " + Normalizer.normalize("Si", Normalizer.Form.NFD));
System.out.println("5:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFD));
System.out.println("6:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFD));
System.out.println("7:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFD));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFD));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFD));

NFD.jpg

System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFKD));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKD));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKD));
System.out.println("4:Si-> " + Normalizer.normalize("Si", Normalizer.Form.NFKD));
System.out.println("5:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFKD));
System.out.println("6:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFKD));
System.out.println("7:Pennsylvanie-> " + Normalizer.normalize("Pennsylvanie", Normalizer.Form.NFKD));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFKD));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFKD));

NFKD.jpg

Quand j'ai essayé le code ci-dessus, NFC n'a pas de conversion. Dans NFKC, le katakana demi-largeur est converti en katakana pleine largeur et les caractères spéciaux sont convertis en caractères correspondants. NFD ne convertit pas les Katakana demi-largeur. Le son boueux (son semi-trouble) est divisé en un point boueux (point semi-trouble) et un son clair. Aucune conversion pour les caractères spéciaux. Dans NFKD, le katakana demi-largeur est divisé en katakana pleine largeur, et le son boueux (son semi-trouble) est divisé en point boueux (point semi-trouble) et son clair. Les caractères spéciaux sont convertis en caractères correspondants. est devenu.

Référence: Normalisation Unicode

En utilisant NFKC, il semble qu'il puisse être utilisé comme méthode pour convertir un kana demi-largeur en kana pleine largeur, Il semble y avoir des endroits où il faut faire attention.

String before = "Conversion de Hankaku Kana en Kana pleine largeur";
String after = Normalizer.normalize(before, Normalizer.Form.NFKC);
System.out.println(before);
System.out.println(after);

Clipboard08.jpg

http://d.hatena.ne.jp/stealthinu/20140826/p1

Il n'y a pas de problème avec ce qui précède, mais je pensais que la marque de cercle pleine largeur (¥) serait sortie telle quelle dans les cas suivants. Il a été converti et sorti.

String before = "Café au lait ¥ 110";
String after = Normalizer.normalize(before, Normalizer.Form.NFKC);
System.out.println(before);
System.out.println(after);

coffee.jpg

Le code de caractère est le suivant.

before:ff7a ff70 ff8b ff70 725b 4e73 20 ffe5 31 31 30 
after :30b3 30fc 30d2 30fc 725b 4e73 20 a5 31 31 30

Lors de la conversion d'un kana demi-largeur en kana pleine largeur, il peut être préférable de créer une table de mappage et de créer une logique qui convertit les caractères correspondants.

Copie du tableau

Vous pouvez copier un tableau en utilisant ʻArrays.copyOf`.

String[] before = {"café", "Lait", "110 yens"};
String[] after = Arrays.copyOf(before, before.length);
System.out.println("before:" + Arrays.toString(before));
System.out.println("after :" + Arrays.toString(after));
before[0] = "fraise";
after[2] = "150 yens";
System.out.println("before:" + Arrays.toString(before));
System.out.println("after :" + Arrays.toString(after));
before:[café,Lait,110 yens]
after :[café,Lait,110 yens]
before:[fraise,Lait,110 yens]
after :[café,Lait,150 yens]

C'est une copie profonde. Le toString de la classe Arrys est une méthode ajoutée dans "1.5".


Ensuite, je vais vérifier "7", "8" et "9" ensemble.

Recommended Posts

Ce que j'ai recherché sur Java 8
Ce que j'ai recherché sur Java 6
Ce que j'ai recherché sur Java 9
Ce que j'ai recherché sur Java 7
Ce que j'ai recherché sur Java 5
Ce que j'ai recherché sur l'apprentissage Java
Ce que j'ai appris sur Kotlin
Ce que j'ai appris avec Java Gold
Ce que j'ai appris avec Java Silver
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
Qu'est-ce que 'java
[Java] À propos des tableaux
Prenez ce que vous avez appris sur la réflexion Java
Quelque chose à propos de java
Où est Java
À propos des fonctionnalités Java
Qu'est-ce que Java <>?
À propos des threads Java
Interface [Java]
Qu'est-ce que 'java
Ce que j'ai appris
À propos de la classe Java
À propos des tableaux Java
À propos de l'héritage Java
À propos de l'interface, interface java
Ce que j'ai appris du calcul monétaire Java
À propos de Java Var
À propos de Java Literal
À propos des commandes Java
Ce à quoi j'ai pensé lorsque j'ai commencé à migrer de Java vers Kotlin
Résumé de ce que j'ai appris sur Spring Boot
[Java] Que dois-je utiliser pour écrire des fichiers?
Ce que j'ai appris en Java (partie 2) Que sont les variables?
Ce que j'ai fait lorsque j'ai converti Java en Kotlin
À propos de la sortie du journal Java
À propos de l'interface fonctionnelle Java
Java, à propos d'un tableau à deux dimensions
À propos de la division de classe (Java)
À propos de [Java] [StreamAPI] allMatch ()
À propos de la classe Java StringBuilder
J'ai d'abord touché Java ②
[Java] À propos de la classe Singleton
J'ai d'abord touché Java ③
À propos de la liaison de méthode Java
J'ai d'abord touché Java ④
[Java] À propos des classes anonymes
A propos des méthodes de fractionnement (Java)
Qu'est-ce que l'encapsulation Java?
[Java Silver] À propos de l'initialisation
Ce que j'ai appris ② ~ Mock ~
A propos de la liste des baies Java
À propos du polymorphisme Java Super ()
Ce que j'ai appris ① ~ DJUnit ~
À propos de l'héritage (Java Silver)
À propos de la classe Java String
À propos des modificateurs d'accès Java
À propos des expressions Java lambda
Qu'est-ce que la technologie Java?
J'ai d'abord touché Java