1. 控制流程
1.1 块作用域
【易错点】: 不能在嵌套的两个块中声明同名变量,如
1
2
3
4
5
6
7
|
public static void main(String[] args){ int n; ... { int n; // Error--can't redefine n in inner block } } |
该代码由于在嵌套的两个块中出现了同名变量,无法通过编译
注意:
在 C++ 中,可以在嵌套的块中重定义一个变量。在内层定义的变量会覆盖在外层定义的变量。
1.2 条件语句
【易错点】: 在循环中,检测两个浮点数是否相等需要格外注意,如
1
|
for ( double x= 0 ; x!= 10 ; x+= 0.1 ); |
上述循环不会结束,因为 0.1 无法精确的用二进制表示,所以 x 将从 9.99999999999998 跳到 10.09999999999998。
【补充点】: switch
语句中的 case
分支语句如果末尾不加 break,其实是一种较危险的情况。所以使用 switch
语句编译代码时可以这样写 javac -Xlint:fallthrough
文件名.java。这样写的话如果某个分支某位缺少 break,编译器就会报警告。如果你就是需要有些分支后面不加 break
,可以为其外围方法加一个标注 @SuppressWarnings
("fallthrough"),这样就不会对方法生成警告。
【补充点】: Java
没有 goto
语句,但 break
可以带标签,可以利用它实现从内层循环跳出的目的。如
1
2
3
4
5
6
7
8
9
|
int n; read_data: while (){ for (){ ... break read_data; ... } } |
注意:
该方式只能跳出语句块,而不能跳入语句块
2. 大数值
【补充点】: 如果基本的整数和浮点数不能满足需求,可以使用 java.math
包中的两个类:BigInteger
和 BigDecinmal
。这两个类可以处理包含任意长度数字序列的数值。BigInteger
类实现了任意精度的整数运算,BigDecinmal
实现了任意精度的浮点型数运算
3. 数组
【易错点】: Java 中的数组长度不要求是常量,如 new int[n]
会创建一个长度为 n 的数组。但是确定 n 的值之后就不能改变。
3.1 命令行参数
【补充点】:每一个 Java 应用程序都有一个带 String[] args
参数的 main 方法。这个参数表明 main
方法将接受一个字符串数组,也就是命令行参数。如
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Message{ public static void main(String[] args){ if (args.length== 0 ||args[ 0 ].equals( "-h" )){ System.out.print( "Hello," ); } else if (args[ 0 ].equlas( "-g" )){ System.out.print( "Goodbye," ); } for ( int i= 1 ;i<args.length;i++){ System.out.print( " " +args[i]); } } } |
如果我们在命令行使用下面这种形式运行这个程序:java Message -g cruel world
,将显示下列信息 Goodbye
, cruel world
!
这表明 args
数组内存的内容如下:args[0]="-g",args[1]="cruel",args[2]="world"
注意:
在 Java 应用程序的 main 方法中,程序名并没有储存在 args 数组中
到此这篇关于Java 控制流程、大数值、数组的文章就介绍到这了,更多相关Java 控制流程、大数值、数组内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_51367845/article/details/120713361