Wie konvertiere ich Integer in int?

82

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

Ich weiß bereits, dass JavaScript int! = Java int. Weil Java int nicht null sein kann, richtig. Das ist das Problem, mit dem ich konfrontiert bin.

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 es mit versucht. intgerObject.intValue(); Aber es macht die Dinge komplexer. Haben wir andere Konvertierungsmethoden oder Konvertierungstechniken?

Jede Lösung wäre besser.

ROMANIA_engineer
quelle
2
Ich verstehe nicht. Sie suchen etwas Einfacheres als pstmt.setInt(1, tempID.intValue())? Was ist einfacher als das Hinzufügen von Code im Wert von 11 Zeichen?
EboMike
1
Versuchen Sie, auf Java 5 oder höher umzusteigen: Die Konvertierung erfolgt automatisch.
Nikita Rybak
1
Hey, es funktioniert. Vielen Dank. Aber jetzt kam das Problem hierher "Integer id = rs.getInt (1);".
1
@ MaRaVan Warum ist das ein Problem? Es sollte auch gut funktionieren. Hast du es überhaupt versucht?
ColinD
Ja, ich habe .intValue () in setTnt () verwendet und es funktioniert. Aber Integer id = rs.getInt (1); zeigt jetzt rotes Licht.

Antworten:

77

Wie schon an anderer Stelle geschrieben:

  • Für Java 1.5 und höher müssen Sie (fast) nichts tun, es wird vom Compiler erledigt.
  • Verwenden Sie für Java 1.4 und früher die Integer.intValue()Konvertierung von Integer nach int.

ABER wie Sie geschrieben haben, Integerkann ein null sein, daher ist es ratsam, dies zu überprüfen, bevor Sie versuchen, zu konvertieren int(oder das Risiko einzugehen NullPointerException).

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

oder

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 bevorzuge meistens kein Autoboxing (zweite Beispielzeile), damit klar ist, was ich tun möchte.

user85421
quelle
1
Java 1.4.2 hat keine Integer.valueOf(int)Referenz: docs.oracle.com/javase/1.4.2/docs/api/java/lang/…
Hardik Mishra
13

Da Sie sagen, Sie verwenden Java 5, können Sie setIntmit einem Integeraufgrund von Autounboxing verwenden: pstmt.setInt(1, tempID)sollte gut funktionieren. In früheren Versionen von Java hätten Sie sich selbst anrufen müssen .intValue().

Das Gegenteil funktioniert auch ... Wenn Sie ein zuweisen int, Integerwird automatisch ein intAutobox mit verwendet Integer.valueOf(int).

ColinD
quelle
1
So ändern Sie diese "Integer id = rs.getInt (1);" zur ganzen Zahl.
1
Ich habe Mann. Es hat für setInt () funktioniert und ich weiß das zu schätzen. Hier ist id Integer und rs.getInt () gibt eine int-Variable zurück. Es funktioniert nicht.
1
Sorry Codierer, ihr hattet alle recht. Mine JRE 1.4. Es tut mir wirklich leid, dass ich Ihre Zeit verschwendet habe.
9

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

spbfox
quelle
7
Was passiert, wenn ein Integerist null?
SparkAndShine
2
@sparkandshine - ein bisschen spät, aber gut - nullsollte einenNullPointerException
user85421
6

Ein anderer einfacher Weg wäre:

Integer i = new Integer("10");

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

Vielleicht haben Sie die Compilereinstellungen 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.

Jim Tough
quelle