首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java Character:"Not A Character“有值吗?

Java Character:"Not A Character“有值吗?
EN

Stack Overflow用户
提问于 2017-01-08 06:43:07
回答 4查看 665关注 0票数 0

在Java语言中,对于Double,我们有一个NaN的值(而不是一个数字)。

现在,对于Character,我们有没有类似的等价物来表示“不是字符”?

如果答案是否定的,那么我认为一个安全的替代品可能是Character.MIN_VALUE (它的类型为char,值为\u0000)。你觉得这个替代品够安全吗?或者你有别的建议吗?

EN

回答 4

Stack Overflow用户

发布于 2017-01-08 06:48:07

在数学中,有一个“不是数字”的概念--5除以0不是一个数字。因为这个概念已经存在,所以double类型有NaN

字符是一个将数字映射到字符的抽象概念。“不是字符”的概念实际上并不存在,因为使用的字符集可能会有所不同(UTF-8、UTF-16等)。

这样想吧。如果我问你,“5除以0是什么?”,你会说它“不是一个数字”。但是,我们确实有一种定义的方式来表示值,即使它不是一个数字。如果我随意画一幅画,问你“这是什么字母?”,你会说“这不是一个字母”。但是,除了我刚刚画的东西之外,我们没有一种方法来真正地表示这种曲折。没有真正的方法来传达我刚刚绘制的“非字符”,但有一种方法可以传达5除以0的“非数字”。

\u0000是空字符,它仍然是一个字符。你到底想要达到什么目的?根据您的目标,\u0000可能就足够了。

票数 2
EN

Stack Overflow用户

发布于 2017-01-08 06:49:54

“不是数字”的概念并不真正属于Java;相反,Java将double定义为IEEE 754 double precision floating-point numbers,而Java也有这个概念。(也就是说,如果我没记错的话,Java确实指定了IEEE754允许实现的有关NaN的一些细节。)

Java也是类似的标准:charchar定义为UTF-16代码单元。

Unicode确实有各种您可以使用的保留未定义字符;例如,U+FFFF ('\uFFFF')永远不是字符。或者,您可以使用U+FFFD ('\uFFFD'),它是一个字符,但特别适合于替换垃圾或无效字符。

票数 1
EN

Stack Overflow用户

发布于 2017-01-08 06:50:09

这取决于你想要做什么。如果你试图表现一个角色的缺失,你可以这样做

代码语言:javascript
运行
复制
Optional<Character> noCharacter = Optional.empty();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41527394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档