Как конвертировать Integer в int?


Я работаю над веб-приложением, в котором данные будут передаваться между клиентом и сервером.

Я уже знаю, что JavaScript int != Java int. Потому что Java int не может быть 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(); Но это все усложняет. У нас есть любой другой методов преобразования или конвертации?

любое исправление было бы лучше.

5 64

5 ответов:

как уже написано в другом месте:

  • для Java 1.5 и более поздних версий вам не нужно ничего делать (почти), это делается компилятором.
  • для Java 1.4 и ранее, используйте 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, Вы можете использовать setInt с Integer из-за autounboxing: pstmt.setInt(1, tempID) должно работать нормально. В более ранних версиях Java вам пришлось бы вызвать .intValue() себя.

работает и обратное... назначение int до Integer автоматически вызвать int быть autoboxed используя Integer.valueOf(int).

Java автоматически преобразует целое число в int и обратно (если вы все еще не используете Java 1.4).

возможно, у вас есть настройки компилятора для вашей IDE, установленные в режим Java 1.4, даже если вы используете Java 5 JDK? В противном случае я согласен с другими людьми, которые уже упоминалось автоупаковка/распаковка.

еще один простой способ будет такой:

Integer i = new Integer("10");

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