我们知道int是一种原始数据类型,不能为null。在我的程序中,我想进行条件检查,比如 int i != "",但它说运算符!=不能应用于int、null。
有什么解决办法吗?
编辑:
我已经知道它不能同时拥有这两个属性,我试图表达的是从另一个服务器接收到的参数进行检查的需求,即它是否接收到了某些值或为空。
我们知道int是一种原始数据类型,不能为null。在我的程序中,我想进行条件检查,比如 int i != "",但它说运算符!=不能应用于int、null。
有什么解决办法吗?
编辑:
我已经知道它不能同时拥有这两个属性,我试图表达的是从另一个服务器接收到的参数进行检查的需求,即它是否接收到了某些值或为空。
您可以使用Integer包装类进行此类比较。否则,如果作为类字段的原始int未另行指定,则默认为0。
编译器从不说谎。
int
类型无法容纳,因此不需要检查 ""
或 null
。
根据变量的有效值范围,将其初始化为像“0”或“-1”这样的值,以标记它为空/未使用。
你可以使用java.lang.Integer,仅在实际使用时传递int值进行实例化。但是,如果你的变量经常更改,这将导致大量对象创建,因为Integer对象默认是不可变的。因此,每次值的更改都会导致需要创建一个新的Integer对象。
Integer maybeNull = getValueFromDatabase();
if (mybeNull != null) {
int i = maybeNull; // outboxing, works with Java 1.5+
} else {
// column value on database was `NULL`
}
您应该检查"i!=0"、"i!=-1"或其他更适合您要求的条件。
class Nullable<A> {
private A value = null;
private Nullable(A value) {
this.value = value;
}
public static <A> Nullable<A> withValue(A value) {
return new Nullable<A>(value);
}
public static <A> Nullable<A> empty() {
return new Nullable<A>(null);
}
public boolean hasValue() {
return value != null;
}
public A getValue() {
return value;
}
public void setValue(A value) {
this.value = value;
}
// Implement toString, equals, hashCode etc.
}
然后将其用作:
Nullable<Integer> ix = Nullable.<Integer>empty();
if(ix.hasValue()) {
int i = ix.getValue();
// do operations with i
} else {
// handle the 'null' case
}
int数据类型保存整数,因此您无法将其与字符串或null进行比较。这是编译器错误。
Integer
- 它有一个额外的值null
。这样你就可以这样做:if (i != null) {..}
然而,仅仅为了拥有一个特殊的null
值而使用包装类型是很少明智的。你可以使用Integer.MAX_VALUE
作为默认值。真正的问题是,你为什么想进行这样的比较?