簡體   English   中英

如何將Integer轉換為int?

[英]How to convert Integer to int?

我正在開發一個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);

我不能在這里使用Integer變量。 我嘗試使用intgerObject.intValue(); 但它使事情變得更加復雜。 我們還有其他轉換方法或轉換技術嗎?

任何修復都會更好。

正如其他地方所寫:

  • 對於Java 1.5及更高版本,您不需要(幾乎)執行任何操作,它由編譯器完成。
  • 對於Java 1.4及Integer.intValue() ,使用Integer.intValue()將Integer轉換為int。

但是在你寫的時候,一個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  

* 使用默認值零,也可以什么也不做,顯示警告或...

我大多不喜歡不使用自動裝箱(第二個樣品線)所以我很清楚我想做什么。

既然你說你使用的是Java 5,那么由於自動裝箱,你可以將setIntInteger一起使用: pstmt.setInt(1, tempID)應該可以正常工作。 在早期版本的Java中,您必須自己調用.intValue()

相反的工作原理...將int賦給Integer將自動使用Integer.valueOf(int)自動生成int

Java將Integer轉換為int並自動返回(除非您仍然使用Java 1.4)。

另一種簡單的方法是:

Integer i = new Integer("10");

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

即使您使用的是Java 5 JDK,也許您將IDE的編譯器設置設置為Java 1.4模式? 否則,我同意已經提到過autoboxing / unboxbox的其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM