¿Cómo convertir Integer a int?

81

Estoy trabajando en una aplicación web en la que los datos se transferirán entre el cliente y el servidor.

Ya sé que JavaScript int! = Java int. Porque, Java int no puede ser nulo, correcto. Ahora bien, este es el problema al que me enfrento.

Cambié mis variables int de Java a 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();
 }

Mi problema esta aqui:

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

No puedo usar las variables Integer aquí. Probé con intgerObject.intValue(); Pero hace las cosas más complejas. ¿Tenemos otros métodos de conversión o técnicas de conversión?

Cualquier solución sería mejor.

RUMANIA_engineer
fuente
2
No entiendo. ¿Buscas algo más simple que pstmt.setInt(1, tempID.intValue())? ¿Qué es más fácil que agregar 11 caracteres de código?
EboMike
1
Intente cambiar a Java 5 o posterior: la conversión se realizará automáticamente.
Nikita Rybak
1
Oye, funciona. Gracias. Pero ahora el problema llegó aquí "Integer id = rs.getInt (1);".
1
@MaRaVan ¿Por qué es un problema? También debería funcionar bien. ¿Lo has probado siquiera?
ColinD
Sí, utilicé .intValue () en setTnt () y funciona. Pero, Integer id = rs.getInt (1); mostrando luz roja ahora.

Respuestas:

76

Como ya está escrito en otro lugar:

  • Para Java 1.5 y posterior, no es necesario hacer (casi) nada, lo hace el compilador.
  • Para Java 1.4 y anteriores, utilice Integer.intValue()para convertir de Integer a int.

PERO como escribiste, an Integerpuede ser nulo, por lo que es aconsejable comprobarlo antes de intentar convertir a int(o arriesgarte a obtener a NullPointerException).

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

o

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

* usando un valor predeterminado de cero, tampoco podría hacer nada, mostrar una advertencia o ...

En general, prefiero no usar autoboxing (segunda línea de muestra), por lo que está claro lo que quiero hacer.

usuario85421
fuente
1
Java 1.4.2 no tiene Integer.valueOf(int)Refer: docs.oracle.com/javase/1.4.2/docs/api/java/lang/…
Hardik Mishra
13

Ya que dice que está usando Java 5, puede usarlo setIntcon una Integerfunción de desempaquetado automático: pstmt.setInt(1, tempID)debería funcionar bien. En versiones anteriores de Java, habría tenido que llamarse a .intValue()sí mismo.

Lo contrario también funciona ... asignar un inta un Integerautomáticamente hará intque se autoencuadre usando Integer.valueOf(int).

ColinD
fuente
1
Cómo cambiar este "Integer id = rs.getInt (1);" a entero.
1
Lo hice hombre. Funcionó para setInt () y lo agradezco. Aquí, id es Integer y rs.getInt () devuelve una variable int. No funciona.
1
Lo siento codificadores, todos tenían razón. Mina JRE 1.4. Siento mucho haberle hecho perder el tiempo.
9

Java convierte Integer a int y viceversa automáticamente (a menos que todavía esté con Java 1.4).

spbfox
fuente
7
¿Qué pasa si un Integeres null?
SparkAndShine
2
@sparkandshine - un poco tarde, pero bueno - nulldebería causar unNullPointerException
user85421
6

Otra forma sencilla sería:

Integer i = new Integer("10");

if (i != null)
    int ip = Integer.parseInt(i.toString());
Parth mehta
fuente
4

¿Quizás tiene la configuración del compilador para su IDE configurada en el modo Java 1.4 incluso si está utilizando un JDK de Java 5? De lo contrario, estoy de acuerdo con las otras personas que ya mencionaron el autoboxing / unboxing.

Jim Tough
fuente