1、switch---case
- 合法参数->唯一原始类型int!
- byte,shot,char,int 可用于switch上
- switch 只能检查等于
- case上用final运行时常量
- 多个case标号使用相同的值也是非法的。
switch--块的直落:default就像任何其他case一样直落
2、if--else
boolean t=false;
if(t=true) System.out.println("a");
//这是正确的,只有boolean可以这样。
3、while->for->do-while
break,return,异常或者System.exit()都会导致循环突然停止,而不运行循环表达式。
标号语句和无标号语句:
foo:
for(int x=3;x<20;x++){
break foo;
}
无标号:
for(int x=3;x<20;x++){
break;
}
4、异常:
try、catch、finally的组合
声明或捕获处理
不能在try、catch、finally之间添加任何代码
传播(进栈、出栈,直落的问题)、捕获(异常匹配的问题)异常
自定义异常类
重新抛出异常
5、断言:断言用来证明你的逻辑是不是正确,不正确抛出AssertionError。
非常简单版本:
简单版本:第二个参数要带返回值。(有return)用于生成字符串消息,改消息显示在栈跟踪内,提供信息。
启动断言:
编译时:(默认 关闭)
javac -source 1.4 TestClass ->启动 这时assert是关键字
javac -source 1.3 TestClass ->默认 这时assert是表示符
运行时:(默认 关闭)
java -ea /-enableassertion TestClass ->运行时启动
java -da /-disableassertion TestClass ->运行时禁用
注意:
- 不用断言验证公有方法
- 用断言验证私有方法
- 不用断言验证命令行参数不要使用能够产生副作用的断言。(断言调用的方法修改了变量)
- 在公有方法内不要使用断言
- 验证某个代码块将从不会到达。assert false