[java] 정수를 정수로 변환하는 방법?

클라이언트와 서버 측간에 데이터가 전송되는 웹 애플리케이션을 개발 중입니다.

나는 이미 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();
상황을 더 복잡하게 만듭니다. 다른 변환 방법이나 변환 기술이 있습니까?

어떤 수정이라도 더 좋을 것입니다.



답변

이미 다른 곳에 쓰여진대로 :

  • Java 1.5 이상에서는 (거의) 아무것도 할 필요가 없으며 컴파일러에 의해 수행됩니다.
  • Java 1.4 이하의 경우 Integer.intValue()Integer에서 int로 변환 하는 데 사용 합니다.

그러나 당신이 쓴대로, an 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  

* 기본값 0을 사용하면 아무것도하지 않거나 경고를 표시하거나 …

나는 대부분 오토 박싱 (두 번째 샘플 라인)을 사용하지 않는 것을 선호하므로 내가하고 싶은 일이 분명합니다.


답변

당신이 자바 5를 사용한다고 가정 때문에, 당신은 사용할 수 있습니다 setIntIntegerautounboxing로 인해 : pstmt.setInt(1, tempID)잘 작동합니다. 이전 버전의 Java에서는 .intValue()자신 을 호출해야했습니다 .

반대의 경우도 마찬가지 입니다. 에을 할당하면 int을 사용하여 Integer자동으로 자동 int박싱됩니다 Integer.valueOf(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 / unboxing에 대해 언급 한 다른 사람들의 의견에 동의합니다.


답변