【问题标题】:How to convert Integer to int?如何将整数转换为整数?
【发布时间】:2011-04-04 00:51:43
【问题描述】:

我正在开发一个 Web 应用程序,其中数据将在客户端和服务器端之间传输。

我已经知道 JavaScript int != Java int。因为,Java int 不能为空,对。 现在这是我面临的问题。

我将我的 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(); 但它使事情变得更加复杂。我们还有其他转换方法或转换技术吗?

任何修复都会更好。

【问题讨论】:

  • 我不明白。您正在寻找比pstmt.setInt(1, tempID.intValue()) 更简单的东西吗?有什么比添加 11 个字符的代码更容易的呢?
  • 尝试切换到 Java 5 或更高版本:转换将自动完成。
  • 嘿,它有效。谢谢。但是现在问题来了“Integer id = rs.getInt(1);”。
  • @MaRaVan 为什么这是个问题?它也应该可以正常工作。你试过了吗?
  • 是的,我在 setTnt() 中使用了 .intValue(),它可以工作。但是,整数 id = rs.getInt(1);现在显示红灯。

标签: java integer


【解决方案1】:

正如在别处已经写过的:

  • 对于 Java 1.5 及更高版本,您不需要(几乎)做任何事情,它由编译器完成。
  • 对于 Java 1.4 及之前的版本,使用Integer.intValue() 将整数转换为整数。

但是正如您所写,Integer 可以为空,因此在尝试转换为 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  

*使用默认值零,也可以什么都不做,显示警告或...

我大多不喜欢使用自动装箱(第二个示例行),所以很清楚我想要做什么。

【讨论】:

【解决方案2】:

由于您说您使用的是 Java 5,因此您可以将 setIntInteger 一起使用,因为自动拆箱:pstmt.setInt(1, tempID) 应该可以正常工作。在早期版本的 Java 中,您必须自己调用 .intValue()

反之亦然...将int 分配给Integer 将自动导致int 使用Integer.valueOf(int) 自动装箱。

【讨论】:

  • 如何改变这个“Integer id = rs.getInt(1);”为整数。
  • 我做了男人。它适用于 setInt(),我很感激。在这里, id 是 Integer 并且 rs.getInt() 返回一个 int 变量。它不工作。
  • 对不起编码员,你们都是对的。我的 JRE 1.4。非常抱歉浪费了您的时间。
【解决方案3】:

Java 自动将 Integer 转换为 int 并返回(除非您仍在使用 Java 1.4)。

【讨论】:

  • 如果Integernull 会发生什么?
  • @sparkandshine - 有点晚了,但很好 - null 应该会导致 NullPointerException
【解决方案4】:

另一种简单的方法是:

Integer i = new Integer("10");

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

【讨论】:

    【解决方案5】:

    即使您使用的是 Java 5 JDK,您的 IDE 的编译器设置是否也设置为 Java 1.4 模式?否则我同意其他人已经提到自动装箱/拆箱。

    【讨论】:

      猜你喜欢
      • 2014-11-13
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      相关资源
      最近更新 更多