정수를 정수로 변환하는 방법?


82

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

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

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


2
이해가 안 돼요. 보다 간단한 것을 찾고 pstmt.setInt(1, tempID.intValue())있습니까? 11 자 상당의 코드를 추가하는 것보다 더 쉬운 것은 무엇입니까?
EboMike

1
Java 5 이상으로 전환 해보십시오. 변환이 자동으로 수행됩니다.
Nikita Rybak

1
이봐, 작동한다. 감사. 하지만 이제 문제는 "Integer id = rs.getInt (1);"입니다.

1
@MaRaVan 왜 그게 문제입니까? 또한 잘 작동합니다. 시도해 보셨습니까?
ColinD

예, setTnt ()에서 .intValue ()를 사용했으며 작동합니다. 그러나 Integer id = rs.getInt (1); 지금 빨간불을 보이고 있습니다.

답변:


77

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

  • 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을 사용하면 아무것도하지 않거나 경고를 표시하거나 ...

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


1
자바 1.4.2은 없습니다 Integer.valueOf(int): 참조 docs.oracle.com/javase/1.4.2/docs/api/java/lang/...
Hardik 슈라

13

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

반대의 경우도 마찬가지 입니다. 에을 할당하면 int을 사용하여 Integer자동으로 자동 int박싱됩니다 Integer.valueOf(int).


1
이 "Integer id = rs.getInt (1);"을 변경하는 방법 정수로.

1
나는 사람을했다. 그것은 setInt ()에서 작동했으며 그 점에 감사드립니다. 여기서 id는 Integer이고 rs.getInt ()는 int 변수를 반환합니다. 작동하지 않습니다.

1
코더들 죄송합니다, 당신 모두가 옳았습니다. 광산 JRE 1.4. 시간을 낭비해서 정말 죄송합니다.

9

Java는 Integer를 int로 변환하고 자동으로 역변환합니다 (Java 1.4를 사용하지 않는 한).


7
이 경우 어떻게됩니까 Integer이다 null?
SparkAndShine

2
@sparkandshine - 조금 늦었지만 잘 - null원인한다NullPointerException
user85421

6

또 다른 간단한 방법은 다음과 같습니다.

Integer i = new Integer("10");

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

4

Java 5 JDK를 사용하는 경우에도 IDE의 컴파일러 설정이 Java 1.4 모드로 설정되어 있습니까? 그렇지 않으면 이미 autoboxing / unboxing에 대해 언급 한 다른 사람들의 의견에 동의합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.