我从stackoverflow.com上的这个问题中得到了这个主意
以下是常见的模式:
final x = 10;//whatever constant value
for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) {
  //...do something
}我要说明的一点是条件语句有些复杂,不会改变。
这样,是否最好在循环的初始化部分中声明它?
final x = 10;//whatever constant value
for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) {
  //...do something
}这更清楚吗?
如果条件表达式很简单怎么办
final x = 10;//whatever constant value
for(int i = 0, j = n*n; i > j; j++) {
  //...do something
}x幅度较大,Math.floor(Math.sqrt(x))+1则等于Math.floor(Math.sqrt(x))。:-)
                { x=whatever; for (...) {...} }或者更好的是,考虑是否有足够的事情需要将它作为一个单独的函数。