在Java语言中,对于Double,我们有一个NaN的值(而不是一个数字)。
现在,对于Character,我们有没有类似的等价物来表示“不是字符”?
如果答案是否定的,那么我认为一个安全的替代品可能是Character.MIN_VALUE (它的类型为char,值为\u0000)。你觉得这个替代品够安全吗?或者你有别的建议吗?
发布于 2017-01-08 06:48:07
在数学中,有一个“不是数字”的概念--5除以0不是一个数字。因为这个概念已经存在,所以double类型有NaN。
字符是一个将数字映射到字符的抽象概念。“不是字符”的概念实际上并不存在,因为使用的字符集可能会有所不同(UTF-8、UTF-16等)。
这样想吧。如果我问你,“5除以0是什么?”,你会说它“不是一个数字”。但是,我们确实有一种定义的方式来表示值,即使它不是一个数字。如果我随意画一幅画,问你“这是什么字母?”,你会说“这不是一个字母”。但是,除了我刚刚画的东西之外,我们没有一种方法来真正地表示这种曲折。没有真正的方法来传达我刚刚绘制的“非字符”,但有一种方法可以传达5除以0的“非数字”。
\u0000是空字符,它仍然是一个字符。你到底想要达到什么目的?根据您的目标,\u0000可能就足够了。
发布于 2017-01-08 06:49:54
“不是数字”的概念并不真正属于Java;相反,Java将double定义为IEEE 754 double precision floating-point numbers,而Java也有这个概念。(也就是说,如果我没记错的话,Java确实指定了IEEE754允许实现的有关NaN的一些细节。)
Java也是类似的标准:char将char定义为UTF-16代码单元。
Unicode确实有各种您可以使用的保留未定义字符;例如,U+FFFF ('\uFFFF')永远不是字符。或者,您可以使用U+FFFD ('\uFFFD'),它是一个字符,但特别适合于替换垃圾或无效字符。
发布于 2017-01-08 06:50:09
这取决于你想要做什么。如果你试图表现一个角色的缺失,你可以这样做
Optional<Character> noCharacter = Optional.empty();https://stackoverflow.com/questions/41527394
复制相似问题