클라이언트와 서버 측간에 데이터가 전송되는 웹 애플리케이션을 개발 중입니다.
나는 이미 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를 사용한다고 가정 때문에, 당신은 사용할 수 있습니다 setInt
와 Integer
autounboxing로 인해 : 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에 대해 언급 한 다른 사람들의 의견에 동의합니다.
답변
