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


82

私は、クライアント側とサーバー側の間でデータが転送されるWebアプリケーションに取り組んでいます。

JavaScript int!= Javaintであることはすでに知っています。なぜなら、Javaintをnullにすることはできないからです。今、これは私が直面している問題です。

Javaのint変数を整数に変更しました。

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(); 、それは物事をより複雑にします。他の変換方法や変換手法はありますか?

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


2
わかりません。あなたはより簡単なものを探していpstmt.setInt(1, tempID.intValue())ますか?11文字相当のコードを追加するよりも簡単なことは何ですか?
EboMike 2010

1
Java5以降に切り替えてみてください。変換は自動的に行われます。
Nikita Rybak 2010

1
ねえ、それは動作します。ありがとう。しかし、ここで問題が発生しました "Integer id = rs.getInt(1);"。

1
@MaRaVanなぜそれが問題なのですか?また、問題なく動作するはずです。あなたもそれを試しましたか?
ColinD 2010

はい、setTnt()で.intValue()を使用しましたが、機能します。ただし、整数id = rs.getInt(1); 今、赤い光を示しています。

回答:


77

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

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

しかし、あなたが書いたように、anIntegerは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番目のサンプル行)を使用しないことを好むので、何をしたいのかが明確です。


1
Java 1.4.2にはInteger.valueOf(int)参照がありません:docs.oracle.com/javase/1.4.2/docs/api/java/lang/…–
Hardik Mishra

13

Java 5を使用していると言っているので、自動アンボックス化により使用できますsetIntInteger問題なく動作するpstmt.setInt(1, tempID)はずです。以前のバージョンのJavaでは、.intValue()自分自身を呼び出す必要がありました。

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


1
この「整数ID = rs.getInt(1);」を変更する方法 整数に。

1
私は男をしました。それはsetInt()で機能し、私はそれを感謝しています。ここで、idは整数であり、rs.getInt()はint変数を返します。動いていない。

1
申し訳ありませんが、コーダー、皆さんは正しかったです。鉱山JRE1.4。時間を無駄にして本当に申し訳ありません。

9

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


7
がである場合Integernullどうなりますか?
SparkAndShine 2015年

2
@ sparkandshine-少し遅れますが、まあ-null原因となるはずですNullPointerException
user85421 2017年

6

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

Integer i = new Integer("10");

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

4

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.