[Java核心技术 卷1] 基础篇难点补充
附:
java中文版文档:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
1、块作用域:
块是指由一对花括号括起来的若干条简单的java语句。块确定了变量的作用域。
注意:不能在嵌套的两个块中声明同名的变量。例如,下面的代码就有错误,而无法通过编译:
public static void main(String[] args) {
int n;
.....
{
int k;
int n; //ERROR!
.....
}
}
2、for循环
1)在循环中,检测两个浮点数 是否相等需要格外小心,下面的for循环可能永远不会结束。
for(double x = 0; x != 10; x += 0.1) ....
2)如果希望在for循环体外使用循环计数器的最终值,就要确保这个变量在循环原句的前面且外部声明:
int i;
for(i = 1; i <= 10; i++) {
.....
}
//i is still defined here
3、switch语句
使用switch语句时,一定要注意当找到合适的条件时,一定要使用break语句退出:
switch (choice) {
case 1:
...
break;
case 2:
...
break;
case3:
...
break;
default:
...
break;
}
如果在case分支语句的末尾没有break语句,那么就会接着执行下一个case分支语句,这种情况相当危险,常常会引发错误,为此,我们尽量避免使用switch语句.
4、带标签的break语句
有时候,在嵌套很深的循环语句中会发生就一些不可预料的事情。此时可能更加希望跳到嵌套的所有循环语句之外。java提供了一种带标签的break语句,用于跳出多重嵌套的循环语句。
int n;
read_data; //标签
while (...) {
for(...) {
...
}
if (..) {
break read_data; //最后跳出while循环
}
}
5、大数值
如果基本的整数和浮点数精度不能满足要求,那么可以使用java.math包中的两个很有用的类,BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现类任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
注意:如果要使用大数值进行算数运算需要使用类中的add和multiply方法,详情请参考java文档java.lang.math包:
详情请看文章开头的java文档
6、数组操作类(Arrays)
Arrays类,包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
例如,可以使用 copyOf 方法将一个数组的所有值拷贝到一个新的数组中去,以及用于二分搜索的 binarySearch 方法和 进行排序的 sort 方法。(详情请看文章开头的java文档)