web-dev-qa-db-fra.com

Java définit-il des constantes pour des caractères tels que SPACE?

Est-ce que Java inclut des constantes pour des caractères uniques tels que SPACE ?

Avoir des noms pris en Unicode serait pratique pour manipuler des chaînes.

Je veux ceci:

String musician = "Lisa" + Character.SPACE + "Coleman" ;

… Plutôt que cela:

String musician = "Lisa" + " " + "Coleman" ;

(à ne pas confondre avec le Java.lang.Character class)

Si rien n'est fourni avec Java, des alternatives?

8
Basil Bourque

Il n’existe pas de telle constante, et pour de bonnes raisons, OMI.

Pourquoi utiliser une constante en premier lieu dans votre exemple?

String musician = "Lisa" + Character.SPACE + "Coleman" ;

est moins lisible que

String musician = "Lisa Coleman";

ou même que

String musician = "Lisa" + ' ' + "Coleman";

Donc, je suppose que ce n'est pas pour des raisons de lisibilité.

Je suppose donc que vous voulez une constante pour éviter de vous répéter dans plusieurs parties de code. Mais utiliser Character.SPACE au lieu de ' ' partout n'entraîne pas moins de répétitions. Seulement pour un code plus verbeux et moins lisible.

Je suppose donc que vous voulez pouvoir modifier la valeur constante à un endroit et l’avoir modifiée partout où elle est utilisée. Mais alors, utiliser une constante Character.SPACE intégrée ne vous permettrait pas d'atteindre cet objectif. Vous auriez toujours besoin de votre propre constante, et son nom ne devrait pas être la valeur, mais la valeur pour :

private static final char FIRST_NAME_LAST_NAME_SEPARATOR = ' ';

Maintenant, il y a une bonne raison d'utiliser cette constante: si vous décidez plus tard d'utiliser une tabulation au lieu d'un espace, vous pouvez modifier la valeur de la constante et recompiler tout votre code.

10
JB Nizet

Il y en a dans Apache Commons

org.Apache.commons.lang3.StringUtils.SPACE

plus

4
Mykhaylo Adamovych

Java possède une liste de constantes de caractères utilisées pour substituer des caractères "non typables" tels qu'un retour arrière (représenté par\r). la liste complète est disponible sur https://docstore.mik.ua/orelly/Java-ent/jenut/ch10_05.htm Cependant, voici quelques exemples:

\\      Backslash
\r      Carriage Return
\"      Double Quote (same for single Quote)
\n      Newline

Vous avez eu l'idée. J'espère que c'est ce que vous recherchiez depuis que vous avez mentionné les constantes de caractère dans votre titre.

Éditer: Lorsque vous utilisez des constantes de caractère car les caractères les entourent de guillemets simples plutôt que de guillemets doubles. Bien qu'ils soient composés de deux (ou plus) caractères, ils désignent un seul caractère ou un seul chiffre binaire plutôt qu'une chaîne.

Remarque: lors de la tentative de comparaison du caractère «entrée» dans la fonction Java.awt.event.KeyListener keyTyped, la constante de caractère \n doit être utilisateur plutôt que la constante de caractère \r.

1
Samuel Newport