我在下面有这个代码但是没有用。但是,如果我在while循环之前声明Integer
变量,它可以工作。输出将被打印。
query = "SELECT COUNT(*) AS tot_by_code FROM `hr` WHERE `hr`.`code` = ?";
st = conn.prepareStatement(query);
st.setString(1, code);
rs = st.executeQuery();
//Integer tot_by_code = null;
while (rs.next()) {
Integer tot_by_code = rs.getInt("tot_by_code");
}
System.out.println("Total patient by code : " + tot_by_code);
我检查了其他线程,并且据说你可以在循环或内部循环之前声明变量,那么为什么我不能在循环中使用变量声明来运行我的代码?提前谢谢。
答案 0 :(得分:4)
你可以在循环中声明它。问题是它只会在该循环中可见,因此您将无法在外部访问它。如果你想在外面打印它,你也必须在外面声明它。
有关范围的详细信息,请参阅JLS §6.3。
特别是:
块中的局部变量声明的范围(第14.4节)是声明出现的块的其余部分
答案 1 :(得分:2)
你是否看到tot_by_code
包在括号中,称为变量范围。因此范围的一侧没人知道tot_by_code
..
System.out.println("Total patient by code : " + tot_by_code);
但是在这里你试图访问范围之外。所以在循环之前声明。