我们知道int是原始数据类型,不能为null。 在我的程序中,我想做一个条件检查,如int i!=“”但是它表示operator!=不能应用于int,null。
任何解决方案?
编辑:
我已经知道它无法容纳这两件事我试图提出我的requiremnet来检查我从另一台服务器获得的参数,如果它已经收到一些值或者它是空的。
答案 0 :(得分:5)
编译器永远不会说不真实。
int无法保留,因此无需检查""
或null
答案 1 :(得分:3)
你应该检查“i!= 0”,“i!= - 1”或其他更适合你的要求。
答案 2 :(得分:2)
您可以使用Integer包装类进行此类比较。否则,如果没有另外指定,则原语int(如果作为类字段)默认为0。
答案 3 :(得分:2)
您想查看是否为参数提交了值,但是您将其置于基本类型中。那是不可能的。
我假设您正在使用某种框架与其他服务器进行通信。如果从框架收到的值已经是int,它将始终具有值。该框架将为您默认它(该值可能会为零)。
你需要一个能给你一个Integer而不是int的框架。在这种情况下,如果没有给出值,它将为null。
没有办法检查int是否没有值,因为int不能“没有值”。
答案 4 :(得分:1)
int数据类型包含一个整数,因此您无法将其与字符串或null进行比较。这是编译器错误
答案 5 :(得分:1)
如果您的值不是整数范围,则使用包装器类型Integer
- 它有一个附加值 - null
。所以你可以这样做:if (i != null) {..}
但是,为了具有特殊的null
值,很少使用包装类型。您可以使用Integer.MAX_VALUE
作为默认值。
答案 6 :(得分:1)
我能想到的唯一两种可能性:
根据变量值的有效范围,使用“0”或“-1”之类的值对其进行初始化,以将其标记为未使用/为空。
您可以使用java.lang.Integer而仅实例化它传递int值,如果您实际使用它。但是,如果您的变量发生了很大变化,这将导致大量的对象创建,因为默认情况下Integer对象是不可变的。因此,每次更改值都会导致需要创建一个新的Integer对象。
答案 7 :(得分:1)
真正的问题是你为什么要做这样的比较?
答案 8 :(得分:1)
如果您需要/期望“null
- state”表示整数值,那么您将不得不使用包装类:
Integer maybeNull = getValueFromDatabase();
if (mybeNull != null) {
int i = maybeNull; // outboxing, works with Java 1.5+
} else {
// column value on database was `NULL`
}
答案 9 :(得分:1)
在C#中创建Nullable
课程。
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
}
答案 10 :(得分:0)
感谢大家的好评,他们都很有感染力,乐于助人。在我的场景中发生的事情是我得到的输入是一个字符串,但不幸的是我还不知道所以现在我只是将字符串与“”进行比较并检查空状态,如果有值,我将其转换回INT。 :)
答案 11 :(得分:0)
如果您遇到问题 &LT; operator!=未应用于long和int&gt; 只需在右侧使用long 即值!= 1L 多数民众赞成......
答案 12 :(得分:0)
施放到int / long帮助我.jsp - page:
<%if ((long)request.getAttribute("amount") != 0) {
out.println(request.getAttribute("amount"));}
else {out.println(payments.getAmount());}%>
答案 13 :(得分:0)
尽量用整数代替整数
Integer value = 2;
value