布尔值st = false;和st也返回值

时间:2015-07-30 15:57:18

标签: java performance

我要问愚蠢的问题。我可以将值存储在布尔引用变量中,如st = rs.next和boolean可以返回字符串值吗?

public class Valid {
    Public static boolean checkuser(String email, String pass) {
        Boolean st = false; // (why did it user here and what's means)
        try {
            Class.forName("com.mysql.jdbc.driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/tst", "root", "mysql"); //Connection established
            PreparedStatement ps = con.prepareStatement("Select * from login where user=? and pass=?");
            ps.setSting(1, eamil);
            ps.setString(2, pass);
            Resultset rs = ps.executeQuery();
            st = rs.next(); //(please brief explain about this line)
        } catch (Exception e) {
            e.printStackTrace();
        }
        return st; //( about this line)
    }
}

我只是不明白这段代码特别是布尔行为

2 个答案:

答案 0 :(得分:0)

  

boolean可以返回字符串值??

st是一个布尔变量,它返回一个布尔值,而不是一个String。因此,您可以为其分配list.setOnItemLongClickListener(new OnItemLongClickListener() { public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id) { arg1.setBackgroundColor(Color.BLUE); return true; } }); 返回的布尔值。

如果执行的查询至少返回一行,则

rs.next()返回rs.next()。因此,您的方法是检查true表中是否存在记录,其中login列中已通过的电子邮件和user列中的已通过密码。

pass初始化为st,这意味着如果try块抛出任何false,您的方法将返回false。

顺便说一句,我将Exception的类型从st更改为Boolean。这里使用boolean包装器类型毫无意义,因为您的方法永远不会返回null。

答案 1 :(得分:0)

value

这声明了一个新的布尔变量并为其赋值Boolean st = false;,否则它将是false

null

这里布尔变量设置st = rs.next();

的返回值

next()

现在可能发生了两件事:如果至少有一行,则查询成功,返回值为return st;。如果查询未成功,则返回值为true。 并且有可能抛出异常。然后使用布尔值(方法中的第一行)false的原始值。

因此,只有至少有一行时,该方法才返回true。如果不存在行或发生错误,则返回false。

但由于布尔值永远不会设置为null,因此编码器可以使用false而不会出现问题。