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

Java 在确定值时,int和Integer之间使用哪个更好?,java,integer,int,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;

我想知道当我检查整数输入时,我应该使用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;
}
这个使用整数:

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

    return s;
}

使用哪种方法更好?

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

1) editState(0,“某些代码”)

2) editState(null,“某些代码”)

这取决于您为stateID的不可接受性设置的标准

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

因此,这取决于您在调用端设置的标准

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

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

1) editState(0,“某些代码”)

2) editState(null,“某些代码”)

这取决于您为stateID的不可接受性设置的标准

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

因此,这取决于您在调用端设置的标准

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

在性能和功能方面没有太大区别。两者几乎相等。它更多地取决于输入在调用editState(…)方法的方法中的方式。如果调用方法的基元类型为int或wrapper Integer,则最好使用相应的editState(…)。
此外,如果调用方法可能有适合int的不同数字类型(byte、short等),则首选第一种。类似地,如果它有可以自动装箱为整数的对象,则首选第二个对象。

在性能和功能方面没有太大区别。两者几乎相等。它更多地取决于输入在调用editState(…)方法的方法中的方式。如果调用方法的基元类型为int或wrapper Integer,则最好使用相应的editState(…)。
此外,如果调用方法可能有适合int的不同数字类型(byte、short等),则首选第一种。类似地,如果它有可以自动装箱为整数的对象,则首选第二个。

在Java中,
int
是一个原语,
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对象创建。

在Java中,
int
是一个原语,
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对象创建。

使用enum<代码>枚举状态
int
是一个原语
Integer
int
上的包装器。自动装箱/取消装箱由编译器完成。因此,除非您明确需要将原语
int
存储为
Integer
对象,否则我几乎总是选择
int
@icza在哪一行使用enum?@我刚刚想到的第一种方法是使用强制转换,(Integer)stateID==null,这种方法会稍微好一点吗?好了:使用enum<代码>枚举状态
int
是一个原语
Integer
int
上的包装器。自动装箱/取消装箱由编译器完成。因此,除非您明确需要将原语
int
存储为
Integer
对象,否则我几乎总是选择
int
@icza在哪一行使用enum?@我刚刚想到的第一种方法是使用强制转换,(Integer)stateID==null,这种方法会稍微好一点吗?好吧,我得说我们必须后退一步。这是一个设计问题。我们是想用特定的StateId(例如“0”)表示“无状态”,还是想用空引用表示“无状态”。就个人而言,我更喜欢特定的Id设计,我会将其应用到特定的枚举常量中,例如State.UNKNOWN或State.NONE。如果你让一个用户来指挥界面,你不会高兴很久的。好吧,我想说我们必须后退一步。这是一个设计问题。我们是想用特定的StateId(例如“0”)表示“无状态”,还是想用空引用表示“无状态”。就个人而言,我更喜欢特定的Id设计,我会将其应用到特定的枚举常量中,例如State.UNKNOWN或State.NONE。如果你有一个用户口述的界面,你不会很高兴很长时间。我明白了。。。刚刚从领导那里得到了文档,将使用int:)无论如何,谢谢;)我懂了。。。刚刚从领导那里得到了文档,将使用int:)无论如何,谢谢;)