【Java基础】 条件与选择

1.关系操作符

Java 提供六种关系操作符(relational operator)(也称为比较操作符(comparison operator))

操作符名称
<小于
<=小于等于
>大于
>=大于等于
==等于
!=不等于

比较的结果是一个布尔值:true(真)或false(假)。

保存布尔值的变量称为布尔变量(boolean variable),boolean数据类型用于声明布尔型变量。
boolean型变量可以是以下这两个值中的一个:true和false。
true 和fa1se 都是字面值,就像10这样的数字一样。它们被当作保留字一样,不能用做程序中的标识符。

boolean a = true;
boolean b = false;

2.逻辑操作符

有时候,是否执行一条语句是由几个条件的组合来决定的。可以使用逻辑操作符组合这些条件。
逻辑操作符(logical operator)也称为布尔操作符(boolean operator),是对布尔值进行的运算,它会创建新的布尔值。

操作符名称
!
&&
||
^异或

运算符执行顺序
在这里插入图片描述
如果优先级相同的操作符相邻,则结合规则(associativity)决定它们的执行顺序。赋值操作符是右结合的(right-associative)。其他二元操作符都是左结合的(left-associative)。

3.if语句

// if - else if - else结构
if(score >=90)
	System.out("厉害");
else if(score >=80)
	System.out("好");
else if(score >=60)
	System.out("ok");
else{
	// 嵌套if
	if(isHardworking)
		System.out("没关系");
	else
		System.out("hehe");
}

3.1常见的问题

/*冗余的条件*/
if(a==true){};
// 应该用下面这个:
if(a){};

/*错误使用赋值语句*/
if(a=true){}; // 先赋值再判断,所以永远是true

3.2 两个浮点数值的相等测试

浮点数具有有限的计算精度;涉及浮点数的计算可能引人舍人错误。因此,两个浮点数值的相等测试并不可靠。

doublex=1.0-0.1-0.1-0.1-0.1-0.1;
System.out.printin(x==0.5);
//这里,x并不是精确等于0.5,而是0.5000000000000001。

虽然不能依赖于两个浮点这里,x并不是精确等于0.5,而是0.5000000000000001。可以通过测试两个数的差距小于某个阈值,来比较它们是否已经足够接近。也就是,对于一个非常小的值ε,如果|x-y<ε,那么x和y非常接近。
通常,将ε设为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.printin(x+"is approximately 0.5");

3.3 简化布尔赋值

boolean even;
if (number % 2 == 0)
	even = true;
else 
	even = false;
// 应该简化为:
boolean even = (number % 2 == 0)

4.switch语句

switch(status){
	case 0:{};
		break;
	case 1:{};
		break;
	case 2:{};
		break;
	default:{};
}
  • switch 表达式必须能计算出一个 char、byte、short、int或者 String型值,并且必须用括号括住
  • case后面都是常量表达式
  • 当 switch 表达式的值与 case语句的值相匹配时,执行从该 case 开始的语句,直到遇到一个break语句或到达该switch语句的结束。break是可选的。break语句会立即终止 switch 语句。
  • 默认情况(defau1t)是可选的,当没有一个给出的case与switch 表达式匹配时
    则执行该操作。
// 落空行为(fall-through behavior)
switch (day){
	case 1:
	case 2:
	case 3:
	case 4:
	case 5: System.out.println("Weekday");break;
	case 6:
	case 0: System.out.println("Weekday");break;
}

5.三元操作符

// y是a b中的最大值
int y = (a > b) ? a : b;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值