如何在Java中处理“int i!=”“”或“int i!= null”语句?

时间:2010-11-10 07:46:05

标签: java

我们知道int是原始数据类型,不能为null。  在我的程序中,我想做一个条件检查,如int i!=“”但是它表示operator!=不能应用于int,null。

任何解决方案?

编辑:

我已经知道它无法容纳这两件事我试图提出我的requiremnet来检查我从另一台服务器获得的参数,如果它已经收到一些值或者它是空的。

14 个答案:

答案 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)

  • int接受一个整数范围 值
  • “”是一个字符串,而不是一个int。
  • null用于引用而不是int (或其他原语)。

真正的问题是你为什么要做这样的比较?

答案 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