java在int变量中放入null

时间:2014-01-06 12:32:46

标签: java string if-statement int

我有一个代码

public int getValue()
{
    int i =  null;

if(condition)
{
i = 10;
}


    return i;
}

这适用于String变量。如何对int变量做同样的事情?

8 个答案:

答案 0 :(得分:5)

int是一种原始类型。它无法保留null值。

您可以使用Integer来保留null值,也可以使用0(或-1)作为默认int值。

答案 1 :(得分:3)

null是对象的有效值,而不是基元的有效值。

由于String个实例是对象,因此在这种情况下编译它就是原因。

要使用int进行代码编译,只需执行:

int i;

if (condition) {
    i = 10;
} else {
    i = -1; //or some other value when the condition is not met.
}

答案 2 :(得分:2)

只有对象可以包含null值。由于int是primitive type,因此它有自己的默认值。

对象默认为null

Data Type   Default Value (for fields)
byte                     0
short                    0
**int**                  0
long                     0L
float                    0.0f
double                   0.0d
char                     '\u0000'
**String (or any object)**  null
boolean false

尝试

  int i =  0;

甚至离开它并稍后分配,如果它是实例成员。请记住,局部变量需要在它们必须分配的地方使用之前进行初始化。

答案 3 :(得分:1)

null的{​​{1}}等效项为int

答案 4 :(得分:1)

您可以使用Integer代替int

public static Integer getValue()
    {
     Integer i =  null;

     if(condition)
     {
       i = 10;
     }
        return (i==null)?0:i;
    }

如果您不想更改int,则可以提供

public static int getValue()
        {
         int i=0;

         if(condition)
         {
           i = 10;
         }

            return i;
        }

答案 5 :(得分:1)

您不能将“null”作为原始数据类型的值放在java中,但您可以使用像“Integer”这样的对象:

示例:

public Integer getValue() {
     Integer i;
     return i = (condition ? null : 10);
}

如果条件为真,前面的代码将返回null为Integer对象,否则返回10。

但是,如果条件不匹配,通常用于返回-1作为默认的int值,因此您可以使用:

public int getValue() {
     int i = -1;
     return i = (condition ? -1 : 10);
}

答案 6 :(得分:1)

我使用像MIN_VALUE

这样的标记值
public int getValue() {
    int i =  Integer.MIN_VALUE;

    // do something
    if (i == Integer.MIN_VALUE) {
        i = 10;
    }

    return i;
}

然而,更简单的解决方案是提供适当的默认值,如10

public int getValue() {
    int i =  10;

    // do something

    return i;
}

答案 7 :(得分:0)

基元(intlongbyte等)没有空值,仅适用于对象(而String是Java中的对象) 。另请注意,基元的默认值通常为0,对象为null。你有几个选择来克服这个

抛出异常

public int getValue() {
   if(condition) {
       return 10;
   }
   throw new IllegalStateException("Condition must be met");  
}

或者你可以返回一些任意数字,它会告诉你条件没有达到,-1是标准方式。

public int getValue() {
    int value = -1;
    if(condition) {
        value = 10;
    }
    return value;
}

另请注意i通常在for循环中使用,所以我更喜欢该变量的不同名称,否则可能会造成混淆。