我有一个代码
public int getValue()
{
int i = null;
if(condition)
{
i = 10;
}
return i;
}
这适用于String变量。如何对int变量做同样的事情?
答案 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)
基元(int
,long
,byte
等)没有空值,仅适用于对象(而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循环中使用,所以我更喜欢该变量的不同名称,否则可能会造成混淆。