如何将 Integer 转换为 int?

问题描述 投票:0回答:5

我正在开发一个网络应用程序,其中数据将在客户端和服务器端之间传输。

我已经知道 JavaScript int != Java int。因为,Java int 不能为 null,对吧。 现在这就是我面临的问题。

我将 Java int 变量更改为 Integer。

public void aouEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
   Integer tempID = employee.getId();
   String tname = employee.getName();
   Integer tage = employee.getAge();
   String tdept = employee.getDept();
   PreparedStatement pstmt;
   Class.forName("com.mysql.jdbc.Driver");
   String url ="jdbc:mysql://localhost:3306/general";
   java.sql.Connection con = DriverManager.getConnection(url,"root", "1234");
   System.out.println("URL: " + url);
   System.out.println("Connection: " + con);
   pstmt = (PreparedStatement) con.prepareStatement("REPLACE INTO PERSON SET ID=?, NAME=?, AGE=?, DEPT=?");
   pstmt.setInt(1, tempID);
   pstmt.setString(2, tname);
   pstmt.setInt(3, tage);
   pstmt.setString(4, tdept);
   pstmt.executeUpdate();
 }

我的问题在这里:

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

我不能在这里使用整数变量。我尝试过

intgerObject.intValue();
但这让事情变得更加复杂。我们还有其他转换方法或转换技巧吗?

任何修复都会更好。

java integer
5个回答
90
投票

正如其他地方已经写过的:

  • 对于 Java 1.5 及更高版本,你不需要做(几乎)任何事情,它是由编译器完成的。
  • 对于 Java 1.4 及之前版本,使用
    Integer.intValue()
    将 Integer 转换为 int。

但是正如您所写,

Integer
可以为空,因此明智的做法是在尝试转换为
int
之前检查这一点(否则可能会面临获得
NullPointerException
的风险)。

pstmt.setInt(1, (tempID != null ? tempID : 0));  // Java 1.5 or later

pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0));  // any version, no autoboxing  

* 使用默认值零,也可以什么也不做,显示警告或...

我最喜欢不使用自动装箱(第二个示例行),所以很清楚我想要做什么。

准备声明

问题展示了

PreparedStatement
的用法。在这种情况下,可以使用其
setObject()
方法来代替
setInt()
。它将进行适当的转换并接受
Integer
,即使它是
null

另一种替代方法是

setNull()
方法,但这需要首先测试
null
的值并将列类型作为第二个参数传递。


14
投票

既然您说您使用的是 Java 5,那么由于自动拆箱,您可以将

setInt
Integer
一起使用:
pstmt.setInt(1, tempID)
应该可以正常工作。在早期版本的 Java 中,您必须自己调用
.intValue()

反之亦然...将

int
分配给
Integer
将自动导致
int
使用
Integer.valueOf(int)
自动装箱。


13
投票

Java 自动将 Integer 与 int 相互转换(除非您仍在使用 Java 1.4)。


6
投票

另一种简单的方法是:

Integer i = new Integer("10");

if (i != null)
    int ip = Integer.parseInt(i.toString());

5
投票

即使您使用的是 Java 5 JDK,也许您的 IDE 编译器设置已设置为 Java 1.4 模式?否则我同意其他人已经提到的自动装箱/拆箱。

© www.soinside.com 2019 - 2024. All rights reserved.