2015-10-17 18 views
5

Javaには、SPACEのような1文字の定数が含まれていますか?JavaはSPACEなどの文字の定数を定義していますか?

名前をUnicodeから取得すると、文字列操作を行う際に便利です。

私はこれ欲しい:

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

java.lang.Characterクラスと混同しないように)

のJavaにバンドルされて何もあれば、代替案:むしろこれより

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

を...?

+0

ありますhttp://stackoverflow.com/a/21437830/460557 –

+0

誰かがこれをしました:http://blog.code-cop.org/2007/08/java-unicode-constants.htmlそのような名前のすべての**ユニコード文字を持つことがどれほど有益であるかわかりません。私はちょうどあなたが必要とする少数の特別なものを挙げることをお勧めします(そして、スペースは特別ではありません)。 – Andreas

答えて

7

このような定数はありません。理由もありますが、IMO。

例の中で最初に定数を使用するのはなぜですか?

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

だから私はそれが読みやすさの理由のためではないと思う

String musician = "Lisa Coleman"; 

あるいはより

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

未満読み取り可能です。

私は、定数がコードのいくつかの部分で繰り返されることを避けることを望んでいると思います。しかし、どこでも' 'の代わりにCharacter.SPACEを使用しても、繰り返しは少なくなりません。より冗長で読みにくいコードにのみ。

したがって、定数の値を1か所で変更し、どこでも変えたいと思っています。しかし、組み込みのCharacter.SPACE定数を使用しても、その目標を達成することはできません。あなたはまだ、独自の定数が必要になり、その名前は価値があるものではありませんが、値が何のためにあるのか:今

private static final char FIRST_NAME_LAST_NAME_SEPARATOR = ' '; 

、その定数を使用するための十分な理由がある:あなたの場合後でスペースの代わりにタブを使用することに決めたら、定数の値を変更してすべてのコードを再コンパイルすることができます。

+2

「リサ・コールマン」、「リサ・コールマン」、「リサ・コールマン」の意味ですか? 1つのスペースには1つのスペースがあり、別のスペースには2つのスペースがあり、別のスペースには2つのスペースがあります(https://en.wikipedia.org/wiki/Non-breaking_space)。おそらくあなたはそのようなあいまいさで燃えたことはありませんが、私は持っています。 –

+0

私の答えが示唆するように、独自の定数を定義します。または、名前の部分を必要な区切り記号と連結するメソッドを記述します。問題はどこだ? –

+1

独自の[DayOfWeek](http://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html)定数または[月](http://)を定義するのは愚かなので、 docs.oracle.com/javase/8/docs/api/java/time/Month.html)定数がすでに定義されている場合はそれを返します。同様に、Unicode文字の定数を定義します。 –

1

Javaには、バックスペース(\ rで表される)のような "untypeable"文字の代わりに使用される文字定数のリストがあります。完全なリストは、しかし、ここでhttps://docstore.mik.ua/orelly/java-ent/jenut/ch10_05.htm で見つけることができるいくつかの例です:

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

あなたがアイデアを得ます。あなたのタイトルに文字定数を言及して以来、これがあなたが探していたものであることを願っています。

編集:文字定数を文字として使用する場合は、二重引用符ではなく一重引用符で囲みます。 2文字以上であるにもかかわらず、文字列ではなく単一文字または単一の2進数を表します。

注:java.awt.event.KeyListener keyTyped関数の 'enter'文字を比較しようとすると、\n文字定数は、\r文字定数ではなく、userである必要があります。

1

は、私はこれがexaplainなると思うのApache Commonsの中にいくつかに

org.apache.commons.lang3.StringUtils.SPACE

more

関連する問題