【问题标题】:How to check if an int is a null如何检查int是否为null
【发布时间】:2012-12-06 16:17:39
【问题描述】:

我有一个名为 Person 的对象。

它有几个属性;

int id;
String name;

我设置了一个人对象,例如Person p = new Person(1,"Joe");

1.) 我需要检查对象是否不为空;下面的表述是否正确;

if (person == null){
}

Or


if(person.equals(null))

2.) 我需要知道 ID 是否包含 Int。

if(person.getId()==null){} 

但是,java 不允许。我该怎么做这个检查?

【问题讨论】:

  • 不仅是 Java。原始类型在任何地方都不能为空。
  • 是的,int 的默认值为 0 ?
  • @sharon。是的,它是 0。因此,您可以改用 0 进行检查。如果你想做空检查。为此使用整数包装器。
  • 使用 int 来表示识别码并不总是一个好主意,因为您没有将其用作真实数字——您不会对其进行加法、减法或其他数学运算。考虑改用字符串。

标签: java int


【解决方案1】:

int 不为空,如果未初始化,它可能为 0

如果你想让一个整数能够为空,你需要使用Integer而不是int

Integer id;
String name;

public Integer getId() { return id; }

除了if(person.equals(null)) 不能为真,因为如果person 为空,那么NullPointerException 将被抛出。所以正确的表达式是if (person == null)

【讨论】:

  • @sharonHwk "person == null" 应该是更好的选择。如果 person 为 null,则不会有 "equal" 方法,然后 "person.equals(null)" 抛出。
  • "一个int不为null,如果没有初始化,它可能为0。"这不是 100% 正确的,一个 int 作为局部变量将不会被初始化。
  • 当然,对于局部变量,不能取消初始化,这是无效代码,Java 不允许这样做,正如其规范中所声明的那样。
【解决方案2】:

原语没有空值。 int 的默认值是 0。

if(person.getId()==0){}

java中原语的默认值:

Data Type   Default Value (for fields)

byte                0
short               0
int                 0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
boolean         false

对象的默认值为 null。

字符串(或任何对象)--->null

1.) 我需要检查对象是否不为空;下面的表述是否正确;

if (person == null){
}

上面的代码检查 person 是否为空。你需要做的

if (person != null){ // checks if person is not null
}

if(person.equals(null))

上面的代码会在 person 为 null 时抛出 NullPointerException。

【讨论】:

    【解决方案3】:

    原语int 不能为空。如果需要 null,请改用 Integer

    【讨论】:

      【解决方案4】:

      1.) 我需要检查对象是否不为空;下面的表述是否正确;

      如果(人 == 空){ }

      是的。这是您检查对象是否为null 的方式。

      2.) 我需要知道 ID 是否包含 Int。

      if(person.getId()==null){}

      由于id 被定义为原始int,它将默认使用0 初始化,并且永远不会是null。如果原始类型为空,则无需检查它们。它们永远不会为空。如果需要,您可以将默认值 0if(person.getId()==0){} 进行比较。

      【讨论】:

        【解决方案5】:

        你必须访问你的类属性。

        要访问它的属性,你必须这样做:

        person.id
        person.name
        

        在哪里

        是你的 Person 类的一个实例。

        如果属性可以访问就可以这样做,如果不可以,则必须使用setter和getter...

        【讨论】:

        • @RohitJain 我不是这么说的,我说如果他想知道 id 是否为“null”,那么要求 person==nul 是不正确的。由于 id 是一个 int ,他不能按照你建议的方式问......
        【解决方案6】:

        在 Java 中,原始数据类型没有 Null 值。 如果您需要检查 Null,请使用 Integer Class 而不是原始类型。您无需担心数据类型差异。 Java 将 int 原始类型数据转换为 Integer。 关于内存 Integer 比 int 占用更多内存。但是内存分配的区别,没什么可考虑的。

        在这种情况下,您必须使用 Inter 而不是 int

        尝试以下 sn-p 并查看示例以获取更多信息,

        Integer id;
        String name;
        
        //Refer this example
            Integer val = 0;
        

        `

        if (val != null){
        System.out.println("value is not null");
        }
        

        `

        您也可以如下分配 Null,

        val = null;
        

        【讨论】:

          【解决方案7】:

          你可以使用

          if (person == null || String.valueOf(person.getId() == null)) 
          

          除了常规方法

          person.getId() == 0
          

          【讨论】:

            猜你喜欢
            • 2011-02-26
            • 1970-01-01
            • 2020-08-10
            • 1970-01-01
            • 2018-07-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-01-08
            相关资源
            最近更新 更多