我的同事传给我一些代码,我运行代码时出现问题。这是其中的一部分
boolean purchased = false;
conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
stmt = conn.createStatement();
String sql = new StringBuilder().... // some query
rs = stmt.executeQuery(sql);
while (rs.next()) {
//some code
purchased = rs.getInt("purchased") == 1;
print(" purchased:" + purchased);
}
这总是将购买打印为错误。我将该部分更改为:
while (rs.next()) {
//some code
if(rs.getInt("purchased") == 1) purchased = true;
print(" purchased:" + purchased);
}
现在一切正常了。
注意:我的结果集只能有 1 条记录。而DB中purchased是bit类型,所以除了0/1之外不能有其他值。
这两种写法有什么区别?据我所知,两者应该以相同的方式工作。
最佳答案
What is the difference between those two ways of writing ? as I know both should work the same way.
不,绝对不是。在你的第一段代码中,如果 rs.getInt("purchased")
返回 1 以外的值,您指定值 false
.
在你的第二段代码中,一次 purchased
已设置为true
,它保持true
循环的其余部分。
假设您的第一行 purchased
的值为 1 ,并且第二行的值为 2,那么在第一段代码中该变量将变为 true
然后false
,但在第二段代码中,变量将设置为 true
在第一次迭代中,然后在第二次迭代中保持不变。
关于java - Java 中为 boolean 变量赋值与赋值比较结果之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431891/