【问题标题】:What is the double/int value equivalent to null?什么是相当于 null 的 double/int 值?
【发布时间】:2016-02-22 04:49:33
【问题描述】:

对于Strings,我可以使用String s = null,因为String 是java 中的一个对象。对于chars,我可以使用char c = '\u0000';,因为这是一个“空”字符(我也可以使用空格字符)。我的问题是,对于 int/double primative 类型,什么相当于 null(如果有)?我不想使用0,因为如果我的值之一实际上是0,这将不起作用。

注意:我需要这个,因为我正在从文件中解析和标记化,如果解析无法解析 int/double,则需要将其返回值设置为某个值以供其调用类检查。

【问题讨论】:

  • 包装类进入java的原因之一就是提供这样的能力。你应该做的就是用Integer替换你的int,用Double替换double,用Character替换char等等。然后您也可以将null 分配给这些变量。
  • @STaefi 好吧,让我问你一个问题。我正在编写自己的编程语言,这就是我需要它的原因。对于我的基本操作方法,我应该使用包装类还是原始数据类型?
  • 这个问题非常基于意见,因为我们不了解您的编程语言的所有方面。包装类的一些好的特性,比如自动装箱/拆箱以及类似 OOP 的行为是非常诱人的,但是原始数据类型可能会给你更高的性能。所以不能用你的问题给你一个好主意。
  • @STaefi 哦,好吧。考虑到这只是为了好玩(ppcg堆栈交换站点),性能对我来说并不是一件大事。我想我会选择包装类。 TY

标签: java null int double


【解决方案1】:

应用程序定义。

0 可能适用于某些应用程序。任何负数都可能适用于其他人。对于双打/浮点数,您可以通过double x = Double.NaN; 使用NaN(又名不是数字)

【讨论】:

  • @Codebender 完美,谢谢。会接受这个。
  • @Codebender 纯粹出于好奇:如果我执行 int i = (int) Double.NaN; 会发生什么?这个投射成功了吗?
  • @AshwinGupta,不...这将是有损...它将成为0主要...您可以轻松尝试...
  • @Codebender 好的,谢谢。我无法尝试,因为我在打电话。不过我回来后试了一下。我忘了告诉你对不起。
【解决方案2】:

没有实际的“空”等价物。 通常我已经使用或见过-1 用于表示无效/空值。 如果您当然不期望负数。

【讨论】:

  • 嗯。有趣。这可能有效,我在技术上想要添加 - 数字的能力。但是,与此同时,我可以将 - 视为减法而不是实际值。 Double.parseDouble() 是否会产生负面影响?
  • parseDouble 确实适用于否定,但我没有想到 @Codebender 给出的 Double.NaN` 答案,这是一个更好的解决方案。
  • 感谢您的理解。我接受了他的。但是为您的答案 +1,因为否定的东西是解决许多问题的好方法。
猜你喜欢
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
相关资源
最近更新 更多