web-dev-qa-db-ja.com

整数を整数に変換する方法は?

クライアント側とサーバー側の間でデータが転送される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);

ここでは整数変数を使用できません。 intgerObject.intValue();で試してみましたが、より複雑になります。他に何かありますか変換方法または変換技術

どんな修正でも良いでしょう。

71
user405398

他の場所ですでに書かれているように:

  • Java 1.5以降では、(ほとんど)何もする必要はありません。それはコンパイラーによって行われます。
  • Java 1.4以前の場合、Integer.intValue()を使用して整数から整数に変換します。

しかし、あなたが書いたように、Integerは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  

* デフォルトのゼロを使用、何もしない、警告を表示する、または...

私はオートボクシング(2番目のサンプル行)を使用しないことを主に好むので、私がやりたいことは明らかです。

69

Java 5を使用していると言うので、オートボックス化によりsetIntとともにIntegerを使用できます。pstmt.setInt(1, tempID)は正常に機能します。 Javaの以前のバージョンでは、.intValue()を自分で呼び出す必要がありました。

反対も機能します... intIntegerに割り当てると、Integer.valueOf(int)を使用してintが自動的にボックス化されます。

13
ColinD

JavaはIntegerをintに変換し、自動的に戻します(まだJava 1.4を使用している場合を除く)。

8
spbfox

別の簡単な方法は次のとおりです。

Integer i = new Integer("10");

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

IDE 5 JDKを使用している場合でも、Javaのコンパイラ設定はJava 1.4モードに設定されていますか?そうでなければ、私はすでにオートボクシング/アンボクシングについて言及している他の人々に同意します。

4
Jim Tough