Java流程控制
运算符
隐式与显式转换
选择结构
循环结构
循环结束控制
一.Java运算符
1.1 基本运算符
基本运算符,包括四则运算符:加/减/乘/除.另外包括,取余运算符%.
1.2 复合运算符
复合运算符,是基本运算符与赋值运算符结合的运算符.包括:+=,-=,*=,/+,%=,值得指出的一点是,复合运算符隐含强制类型转换.
1.3 逻辑运算符
逻辑运算符包括6个运算符,逻辑与&,逻辑或|,逻辑非!,逻辑异或^,双与&&,双或||.其中,需要注意的是,&&与||和&与|的表达式结果是保持一致的,但是&&与||有一个特性,如果左边表达式的结果可以确定整个表达式的结果,那么右边的表达式将不会判断,提高了一丢丢效率.
1.4 位运算符
位运算符,有按位取反~,按位异或^,按位与&,按位或|,按位左移<<,按位右移>>,按位无符号右移>>>,其中按位异或非常有特点,一个数据对另一个数据位异或偶数次还是本身,如1^2^2=1;可以用于交换2个变量的值而不需借用第三方变量.
1.5 三元运算符
三元运算符,也称条件运算符.使用三元运算符,可以快速的得出2个数的大小,常用于判断2个数中那个大那个小.
1.6 自增/自减运算符
自增与自减运算符,在底层运算效率十分高效,常用于循环和选择判断中条件控制语句中.自增自减运算符分前缀和后缀方式,单独构成一个语句时,2种方式没有任何区别;其他情况下,需要知道的是前缀方式表示先参与自增或自减操作,再参与表达式运算,而后缀则相反,先把变量的值拿来参与表达式的运算,再对变量进行自增自减操作.
二.隐式与显式转换
2.1 Java的自动类型提升(隐式转换)
在计算机底层,需要统一变量的类型,才能进行相关的操作.这就要求,在混合运算中,编译器能自动将各种数据类型转换为最大的数据类型进行统一,在Java中基本数据类型的自动提升顺序为:byte,char,short—>int—>long—>float—>double.
2.2 Java的强制类型转换(显式转换)
有时候,需要将其他数据类型的数据转换成需要的数据类型,如小数取整.如果没有进行显式转换,编译器会认为逻辑不严谨,直接编译失败,从这一点上看,Java语言比C语言对程序员的要求比较严格.
三.选择结构
3.1 if选择结构
if,就是如果的意思,表示条件判断.if可以改变程序的流程,主要有三种形式,针对不同的情况合理选择不同的if形式能大大提高程序的健壮性.
格式1:if
格式2:if…else…
格式3:if…else if…else if…else…
if语句常用于判断区间或范围时使用...
3.2 switch多分支选择
switch,多分支选择语句,有时候情况很复杂,有多个流向,这时便需要使用switch()语句进行流程控制.
switch(byte/short/char/int/String/枚举){
case 情况1:...;break;
case 情况2:...;break;
… …
default:…;break;
}
switch常用于判断固定值使用...
四.循环结构
4.1 for循环
for循环,常用于循环次数已知的循环场合,如循环打印出1-10的数.循环,是程序设计语言中最重要的结构之一,循环对于减少代码量提高复用性上有极大的优势.for循环的格式有如下2种,第一种是常规的形式,第2种,是迭代器循环for each,主要用于遍历集合元素的场合.
形式1:
for(初始化表达式1;条件判断表达式2;循环控制表达式3){
循环体;
}
形式2:
for(数据类型 变量名:集合){
循环体;
}
4.2 while循环
while循环,与for循环刚好相反,它用于循环次数不可知的场合,如,打印数组中的元素,直到遇到数字0.while循环只有唯一的一种形式,如下:
初始化表达式1;
while(条件判断表达式2){
循环体;
循环控制表达式3;
}
4.3 do…while循环
do…while循环,使用非常少.是一种直到型循环,和while循环可以等效替换使用.形式也只有一种,如下:
初始化表达式1;
do{
循环体;
循环控制表达式3;
}while(条件判断表达式2);
五.循环结束控制
5.1 break关键字
break关键字,应用的场合有2个:循环结构中和switch多分支选择结构中.break,主要用于跳出循环,值得注意的是break一次只能跳出一个循环,带"标签"的break却可以跳到最外层循环而无论多少循环嵌套,但不常用.
5.2 continue关键字
continue关键字,只能用于循环结构中.continue只能结束本次循环,而不能跳出循环,说到底continue无法真正做到结束循环.break和continue最重要的一点是,其下不可以再有任何有效语句,因为永远无法执行到break和continue下面的语句,编译器认为这种情况不严谨,直接编译失败.
5.3 return关键字
其实,return也可以跳出循环,不过它比break更厉害,直接终止方法的执行.需要指出的是,任何方法都有return语句(有的用户显式给出,而用户没有显式给出的系统会自动添加return;),因为这是保证能返回调用者出继续执行其他语句的前提.