如何将Integer转换为int?

时间:2010-08-26 00:50:43

标签: java integer

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

我已经知道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);

我不能在这里使用Integer变量。我试过intgerObject.intValue(); 但它使事情变得更加复杂。我们还有其他转换方法或转换技术吗?

任何修复都会更好。

5 个答案:

答案 0 :(得分:67)

正如其他地方所写:

  • 对于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  

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

我大多不喜欢不使用自动装箱(第二个样品线),所以我很清楚我想做什么。

答案 1 :(得分:13)

由于您说您正在使用Java 5,因此可以使用setInt Integer因为自动装箱:pstmt.setInt(1, tempID)应该可以正常使用。在早期版本的Java中,您必须自己调用.intValue()

反之亦然......将int分配给Integer会自动导致int使用Integer.valueOf(int)进行自动装箱。

答案 2 :(得分:8)

Java将Integer转换为int并自动返回(除非您仍然使用Java 1.4)。

答案 3 :(得分:4)

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

答案 4 :(得分:4)

另一种简单的方法是:

Integer i = new Integer("10");

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