boolean数据类型
boolean数据类型声明一个具有值true或者false的变量。
选择语句
单分支if语句、双分支if-else语句、嵌套if语句、多分支if-else语句、switch语句和条件表达式。
两个浮点数值的相等测试
浮点数具有有限的计算精度;涉及浮点数的计算可能引入取整错误。因此,两个浮点数值的相等测试并不可靠。比如,你期望代码显示true,但是会让人意外的显示false:
double x = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1;
System.out.println(x == 0.5);
这里,x并不是精确等于0.5,而是0.5000000000000001。虽然不能依赖于两个浮点数值的相等测试,但是可以通过测试两个数的差距小于某个阈值,来比较它们是否已经足够接近。也就是,对于一个非常小的值e,如果|x - y|<e,那么x和y非常接近。e是一个读为"epsilon"的希腊字母,常用于表示一个非常小的值。通常,将e设为10^-14来比较两个double类型的值,而设为10^-7来比较两个float类型的值。例如,下面的代码:
final double EPSILON = 1E-14;
double x = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1;
if(Math.abs(x - 0.5) < EPSILON)
System.out.println(x + " is approximately 0.5");
将显示0.5000000000000001近似等于0.5。
Math.abs( a )方法可以用于返回a的绝对值。
产生随机数
- 产生随机数的方法有很多种。现在使用System.currentTimeMillis( )%10产生第一个整数,使用System.currentTimeMillis( )*7%10产生第二个整数。
- 可以使用Math.random( )来获得一个0.0到1.0之间的随机double值,不包括1.0。这样,(int)(Math.random( )*10)会返回一个随机的一位整数(即0到9之间的数)。
逻辑操作符
布尔操作符
操作符 | 名称 | 说明 |
! | 非 | 逻辑非 |
&& | 与 | 逻辑与 |
| | | 或 | 逻辑或 |
^ | 异或 | 逻辑异或 |
判断闰年
如果某年可以被4整除而不能被100整除,或者可以被400整除,那么这一年就是闰年。
isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
switch语句
switch(switch 表达式){
case 值1: 语句(组)1;
break;
case 值2: 语句(组)2;
break;
...
case 值N: 语句(组)N;
break;
default: 默认情况下执行的语句(组)
}
switch 语句遵从下述规则:
- 默认情况(default)是可选的,当没有一个给出的case与switch表达式匹配时,用来执行该操作。
- 关键字break是可选的。break语句会立即终止switch语句。
警告:不要忘记在需要的时候使用break语句。一旦匹配其中一个case,就从匹配的case处开始执行,直到遇到break语句或到达switch语句的结束。这种现象称为落空行为(fall-through behavior)。例如,下列代码为第一天到第五天显示Weekdays,第0和第6天显示Weekends。
switch (day){
case1:
case2:
case3:
case4:
case5: System.out.println("Weekday");break;
case0:
case6: System.out.println("Weekend");
}
为了避免程序设计错误,提高代码的可维护性,如果故意省略break,在case子句后添加注释是一个好的做法。
条件表达式
if(x > 0)
y = 1;
else
y = -1;
在这个例子中,还可以选择使用如下的条件表达式,也能达到同样的效果。
y = (x > 0) ? 1 : -1;
条件表达式是一种完全不同的风格,在语句中没有明确出现if。该语法如下所示:
boolean-expression ? expression1 : expression2;
//(布尔表达式 ? 表达式1:表达式2)
如果布尔表达式的值为true,则条件表达式的结果为表达式expression1;否则,结果为表达式expression2。
注意:符号?和:在条件表达式中同时出现。它们构成一种条件操作符,因为操作数有三个,所以称为三元操作符。它是Java中唯一的三元操作符。
调试
- 一次执行一条语句
- 跟踪进入或者一步运行过一个方法
- 设置断点
- 显示变量
- 显示调用堆栈
- 修改变量