2015-10-17 52 views
5

Java是否包含单个字符的任何常量,如SPACEJava是否为任何字符(如SPACE)定义了常量?

在进行字符串操作时,从Unicode获取名称将会非常方便。

我想这一点:

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

...而不是这样的:

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

(不要与java.lang.Character类混淆)

如果没有被绑定到Java,替代品?

+0

我认为这将exaplain:http://stackoverflow.com/a/21437830/460557 –

+0

有人这样做:http://blog.code-cop.org/2007/08/java-unicode-constants.html不知道它是如何有用的**每个** Unicode字符命名像那样。我建议你只列出你需要的几个*特殊的*(并且不,空间不是特别的)。 – Andreas

回答

7

有没有这样的常数,并有充分的理由,国际海事组织。

为什么在你的例子中首先使用一个常量?

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

String musician = "Lisa Coleman"; 

甚至比

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

所以我想这不是可读性原因的可读性。

因此,我猜你想要一个常量,以避免在代码的几个部分重复自己。但使用Character.SPACE而不是' '无处不会导致较少的重复。只有更详细和更少可读的代码。

因此,我猜你希望能够在一个地方改变常数值,并在所使用的地方改变它。但是,然后使用内置的Character.SPACE常数不会让你实现这一目标。你仍然需要自己定,它的名字不应该是值是什么,但价值是什么

private static final char FIRST_NAME_LAST_NAME_SEPARATOR = ' '; 

现在,有一个很好的理由使用常数:如果您稍后决定使用制表符而不是空格,则可以更改常量的值并重新编译所有代码。

+2

你的意思是“Lisa Coleman”或“Lisa Coleman”或“Lisa Coleman”?一个拥有一个空间,另一个拥有双重空间,另一个拥有[非破坏空间](https://en.wikipedia.org/wiki/Non-breaking_space)。也许你从来没有被这种模糊不清的东西烧毁,但我已经。 –

+0

然后定义你自己的常数,正如我的答案所示。或者写一个连接名称部分和你想要的分隔符的方法。哪里有问题? –

+1

因为定义自己的[DayOfWeek](http://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html)常量或[Month](http:// docs.oracle.com/javase/8/docs/api/java/time/Month.html)如果已经定义,则为常量。同样为Unicode字符定义常量。 –

1

Java确实有一个字符常量列表,用于替换“不可类型”字符,如退格符(由\ r表示)。完整名单可在https://docstore.mik.ua/orelly/java-ent/jenut/ch10_05.htm 找到然而这里是几个例子:

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

你的想法。希望这是你所寻找的,因为你在标题中提到了字符常量。

编辑:使用字符常量作为字符用单引号括住它们而不是双引号。尽管有两个(或更多)字符,但它们表示单个字符或单个二进制数字而不是字符串。

注意:当试图比较java.awt.event.KeyListener keyTyped函数中的“输入”字符时,\n字符常量应该是用户而不是\r字符常量。

1

有一些在Apache的百科全书

org.apache.commons.lang3.StringUtils.SPACE

more

相关问题