怎么把Integer转换成int?


81

我正在开发一个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(); 但这会使事情变得更复杂。我们还有其他转换方法或转换技术吗?

任何修复都会更好。


2
我不明白 您正在寻找比pstmt.setInt(1, tempID.intValue())?更简单的东西?比添加11个字符的代码容易吗?
EboMike 2010年

1
尝试切换到Java 5或更高版本:转换将自动完成。
Nikita Rybak 2010年

1
嘿,行得通。谢谢。但是现在问题来了:“整数id = rs.getInt(1);”。

1
@MaRaVan为什么会有问题?它也应该工作正常。你试过了吗?
ColinD

是的,我在setTnt()中使用了.intValue(),并且可以正常工作。但是,整数ID = rs.getInt(1); 现在显示红灯。

Answers:


76

如其他地方所写:

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

但是正如您所写,anInteger可以为null,因此明智的做法是在尝试转换为之前先进行检查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
Java 1.4.2没有Integer.valueOf(int)参考:docs.oracle.com/javase/1.4.2/docs/api/java/lang/…–
Hardik Mishra

13

既然您说您正在使用Java 5,那么由于自动拆箱,您可以将其setInt与使用Integerpstmt.setInt(1, tempID)应该可以正常工作。在Java的早期版本中,您将不得不自称.intValue()

相反的方法也适用...将分配intInteger会自动int使用来将装箱Integer.valueOf(int)


1
如何更改此“整数id = rs.getInt(1);” 到整数。

1
我做过男人 它为setInt()工作,我对此表示赞赏。在这里,id是Integer,而rs.getInt()返回一个int变量。它不起作用。

1
抱歉,编码人员,大家都没错。我的JRE 1.4。非常抱歉浪费您的时间。


6

另一种简单的方法是:

Integer i = new Integer("10");

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

4

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.