96 Stimmen

Wie konvertiert man Integer in int?

Ich arbeite an einer Webanwendung, bei der Daten zwischen Client- und Serverseite übertragen werden sollen.

Ich weiß bereits, dass JavaScript int != Java int. Denn Java int kann nicht null sein, richtig. Nun ist dies das Problem, das ich vor mir habe.

Ich habe meine Java int-Variablen in Integer geändert.

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();
 }

Mein Problem ist hier:

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

Ich kann die Integer-Variablen hier nicht verwenden. Ich habe versucht mit intgerObject.intValue(); Aber es macht die Dinge komplexer. Haben wir irgendwelche anderen Umstellungsmethoden oder Umstellungstechniken?

Jede Lösung wäre besser.

90voto

user85421 Punkte 28350

Wie bereits an anderer Stelle geschrieben:

  • Für Java 1.5 und später müssen Sie (fast) nichts tun, das erledigt der Compiler.
  • Für Java 1.4 und früher, verwenden Sie Integer.intValue() um von Integer in int zu konvertieren.

ABER wie Sie geschrieben haben, ein Integer kann null sein, daher ist es ratsam, dies zu überprüfen, bevor man versucht, in int (oder Sie riskieren eine 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  

* mit einem Standardwert von Null, könnte auch nichts tun, eine Warnung anzeigen oder ...

Ich ziehe es meist vor, keine Autoboxen zu verwenden (zweite Beispielzeile), damit klar ist, was ich tun will.

14voto

ColinD Punkte 106101

Da Sie sagen, Sie verwenden Java 5, können Sie setInt mit einer Integer aufgrund von Autounboxing: pstmt.setInt(1, tempID) sollte gut funktionieren. In früheren Versionen von Java mussten Sie .intValue() selbst.

Das Gegenteil funktioniert auch... die Zuweisung eines int zu einer Integer wird automatisch die int für die Autobox mit Integer.valueOf(int) .

13voto

spbfox Punkte 909

Java konvertiert Integer in int und zurück automatisch (es sei denn, Sie arbeiten noch mit Java 1.4).

6voto

Parth mehta Punkte 1428

Eine andere einfache Möglichkeit wäre:

Integer i = new Integer("10");

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

5voto

Jim Tough Punkte 13996

Vielleicht haben Sie die Compiler-Einstellungen für Ihre IDE auf den Java 1.4-Modus eingestellt, auch wenn Sie ein Java 5 JDK verwenden? Ansonsten stimme ich den anderen Personen zu, die bereits Autoboxing/Unboxing erwähnt haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X