标签:表达式、if-else、while、for、break、continue
选择结构,顾名思义是从众多分支中选一个进行执行,具体来说,java提供单独的if语句,多分支的if-else if语句,以及全分支的if -else if -else语句,当然为了减少分支撰写的复杂性,引入switch语句。
如下图所示即为一例子,如果x大于7输出“大于7”的字样,如果x小于7输出“小于7”的字样,最后如果既不大于7也不小于7,运行else中的输出“等于7”的字样。
上图中,if括号内的是布尔表达式,结果为true或者false,对应该条件是否成立,表达式中用关系运算符来表达大小关系,例如3>7返回false,3==7返回false等等。
【注意】条件表达式中判断是否相等用==,而非=,后者表示赋值。
【注意2】布尔表达式可以互相组合,用逻辑运算符&&、||、&、|、!^进行组合。
特别的:&&表示短路/条件与,即左侧为假则直接放弃判断右侧表达式,返回false;
||表示短路/条件或,即左侧为真则直接放弃判断右侧表达式,返回true;
&、&&→一假则假;|、||→一真则真;^→同假异真;
翻译:
- &→表示全部条件都要满足【我全都要】;
- |→表示至少有一个条件满足【有一个就行】;
- ^表示只能满足某一条件【二选一】;
如上图所示,switch的圆括号内为表达式/变量,内部为各分支,case8表示x的值为8的情况,此时输出x=8,然后用break终止,跳出switch。
【注意】switch内部见到break为止,从上到下依次执行。
【注意2】switch表达式必须是byte、short、int、String和char类型。
有时为了方便程序员在满足某些条件的时候快速赋值,引入条件表达式:
expression?exp1:exp2;
例如,int x = (3>2)?3:2;,这时x取3;
例如,下面表达式在数学上的计算顺序是怎么样的呢?
3 + 4 * 4 - 8 / 7 >99 && ++ 8 > 9
java中,优先级如下,数字越小优先级越高:
- 括号
- ++,--,类型转换,!()
- 算数运算符(*/ +-)
- 关系运算符(>< ==!=)
- 逻辑运算符(^ && ||)
- 赋值运算(+= -= = /= %=)
根据循环结束的方式,又分为标记flag循环和计数循环,前者指达到某个标记,后者指到达固定数量的步数。
for循环的结构为:
总结:for循环适合固定步数,即已经知道要执行的次数,而while适合标记循环,即给出终点条件的情况。
为了能够在达到某个条件后控制循环走向,引入break和continue。
break:用于while、for、switch和do-while中,一旦遇到break,则跳出包含break的最内层的循环,立刻终止进行返回。
continue:用于直接开启下一轮循环,调到开始处进行判断。
for循环的continue会执行控制变量转移语句,然后进行条件判断;
while循环会直接进行条件判断。