在int和Integer之间使用哪个更好来确定值?

时间:2014-07-18 07:58:54

标签: java integer int

我想知道当我检查整数输入时,我应该使用int还是Integer进行检查?

以下是一些模拟代码:

这个使用int:

public State editState (int stateID, String stateCode) {
    if (stateID == 0) {
        throw new Exception("State id not set.");
    }
    ...
    State s = new State();
    ...

    return s;
}

这个使用Integer:

public State editState (Integer stateID, String stateCode) {
    if (stateID == null) {
        throw new Exception("State id not set.");
    }
    ...
    State s = new State();
    ...

    return s;
}

哪种方法更好用?

3 个答案:

答案 0 :(得分:2)

当您调用editState(..,..)并且未设置stateId时,会出现两种情况 -

1)editState(0,“some code”);

2)editState(null,“some code”);

这取决于您为不接受stateID而设置的标准。

如果将不接受的条件设置为null,则必须使用“整数”  如果为0则可以同时使用'Integer'和'int'......

所以它取决于你在调用方面设置的标准..

我认为整数(包装类)更好,因为出色的自动装箱,拆箱功能 以及在需要时为您提供操作的各种方法...

答案 1 :(得分:1)

性能明智或功能明显不同。两者几乎是平等的。它更多地取决于调用editState(...)方法的方法中的输入方式。如果调用方法具有基本类型int或包装器Integer,则最好使用相应的editState(...)。 此外,如果调用方法可能有不同的数字类型(字节,短等),适合int,那么第一个是首选。类似地,如果它具有可以自动装箱到Integer的对象,则优先选择第二个。

答案 2 :(得分:1)

嗯,在Java中,int是原始的,而IntegerObject。这意味着,如果您制作了新的Integer

Integer i = new Integer(6);

你可以在i上调用一些方法:

String s = i.toString(); //sets s the string representation of i

int

int i = 6;

你不能在它上面调用任何方法,因为它只是一个原始方法。所以:

String s = i.toString(); //will not work!!!

会产生错误,因为int不是对象。

我认为如果您没有要求使用此类操作,请使用int而不是Integer,并且还可以避免不必要的Java对象创建。