当前位置:  开发笔记 > 编程语言 > 正文

分配布尔变量值和在Java中分配比较结果之间的区别

如何解决《分配布尔变量值和在Java中分配比较结果之间的区别》经验,为你挑选了1个好方法。

我的同事传给我一些代码,当我运行代码时会出现问题.这是它的一部分

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);
}

现在它完美无缺.

注意: 我的ResultSet只能有1条记录.并且在购买的 DB中是类型,因此不能有除0/1之外的其他值.

这两种写作方式有什么区别?我知道两者应该以同样的方式工作.



1> Jon Skeet..:

这两种写作方式有什么区别?我知道两者应该以同样的方式工作.

不,绝对不是.在第一段代码中,如果rs.getInt("purchased")返回的值不是 1,则赋值为false.

在你的第二段代码中,一旦purchased设置为true,它将保持true循环的其余部分.

因此,假设你的第一行具有用于值1 purchased,和第二个行具有2的值,然后在第一块代码的变量将变得true然后false,但在第二个片的代码的变量将被设置为true在第一次迭代,然后在第二次迭代中没有改变.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有