我想知道当我检查整数输入时,我应该使用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;
}
哪种方法更好用?
答案 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
是原始的,而Integer
是Object
。这意味着,如果您制作了新的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对象创建。