如何设置为int值null? Java Android [重复]

Posted

技术标签:

【中文标题】如何设置为int值null? Java Android [重复]【英文标题】:How to set to int value null? Java Android [duplicate] 【发布时间】:2014-03-26 19:45:33 【问题描述】:

将已定义的 int 设置为 null 的最佳方法是什么?

private int xy()
    int x = 5;
    x = null; //-this is ERROR
    return x;

所以我选择了这个

private int xy()
    Integer x = 5;
    x = null; //-this is OK
    return (int)x;

然后我需要类似的东西:

if(xy() == null)
    // do something

我的第二个问题可以安全地将 Integer 转换为 int 吗?

感谢您的回复。

【问题讨论】:

编写一个类来包装整数并添加一个名为“invalid”的布尔值,并在整数应该为空时将其设置为true。现在您可以在调用它时检查整数是否无效。您也可以在调用 getInt() 但“invalid”为真时抛出异常。您也可以将其作为泛型类来避免为每个原始数据类型创建一个类。 【参考方案1】:

你不能。 int 是一个原始值类型 - 对于int,没有 null 值这样的概念。

您可以将nullInteger 一起使用,因为这是一个,而不是原始值。

不清楚您的方法试图达到什么目的,但您根本无法将 null 表示为 int

【讨论】:

如果我将 Integer 转换为 int,我可以问 (int x == null) 吗? 如果您尝试将null Integer 转换为int,那么您将在转换时获得NullPointerException 所以现在该怎么做...谢谢【参考方案2】:

在这种情况下,我会避免同时使用null

只需使用-1 作为您的null

如果您需要 -1 成为可接受的(非空)值,请改用 float。由于您所有的真实答案都将是整数,因此请将您的 null 0.1

或者,找到x 永远不会出现的值,例如Integer.MAX_VALUE 或其他东西。

【讨论】:

我认为在所有可能的值实际上都是整数的情况下使用 float 而不是 int 真的很难看。【参考方案3】:

只有对象可以为空。基元(如int)不能。

我可以安全地将 Integer 转换为 int 吗?

您不需要演员表,您可以依靠自动拆箱。但是它可能会抛出 NullPointerException:

Integer i = 5;
int j = i; //ok

Integer k = null;
int n = k; //Exception

【讨论】:

【参考方案4】:

您的方法可以编译,但在尝试拆箱 Integer 时会抛出 NullPointerException...

Integer 和 int 之间的选择取决于您要达到的目标。你真的需要一个额外的状态来表示“没有价值”吗?如果这是合法状态,请使用整数。否则使用 int。

【讨论】:

以上是关于如何设置为int值null? Java Android [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#中如何判断数据库中int字段为Null

如何判断int类型为空或null

如果列在 PostgreSQL 中同时包含 int 和 NULL 值,如何从文本转换为 int

如果 Int32.TryParse 无法解析字符串,如何将其输出设置为 null? [复制]

springboot~Integer和int如何选择,Integer的意义何在

Java中如何判断数组元素是不是为空