How to convert Integer to int?

user405398 picture user405398 · Aug 26, 2010 · Viewed 286.1k times · Source

I am working on a web application in which data will be transfer between client & server side.

I already know that JavaScript int != Java int. Because, Java int cannot be null, right. Now this is the problem I am facing.

I changed my Java int variables into 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();
 }

My problem is here:

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

I cant use the Integer variables here. I tried with intgerObject.intValue(); But it makes things more complex. Do we have any other conversion methods or conversion techniques?

Any fix would be better.

Answer

user85421 picture user85421 · Aug 26, 2010

As already written elsewhere:

  • For Java 1.5 and later you don't need to do (almost) anything, it's done by the compiler.
  • For Java 1.4 and before, use Integer.intValue() to convert from Integer to int.

BUT as you wrote, an Integer can be null, so it's wise to check that before trying to convert to int (or risk getting a NullPointerException).

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

or

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

* using a default of zero, could also do nothing, show a warning or ...

I mostly prefer not using autoboxing (second sample line) so it's clear what I want to do.