语句
三元操作符
三目运算符
条件表达式 ? result1 : result2
表达式为true,结果就是result1,否则结果是result2
支持无限嵌套的 - 但是不推荐,可读性差
m ? (表达式?result1:result2):result2
if…else..
if语句单独使用场景
if(条件){//成立 //code... }
{}可以省略的场景
if(条件) //code... 如果if{}中的代码只有1行,那么{}可以省略,但是一定要缩进
if…else…使用
if(条件){ //条件成立 }else{ //条件不成立 } //如果语句仍然只有一行,{}还是可以省略的 if(条件) //code else //code..
多条件分支if…else if…else..if … else…
注意条件是互斥的
if(条件){ //条件成立 }else if(条件){ //条件不成立 }else if(条件){ //code }else{ //code.. }
if..else语句可以无限嵌套使用
if(条件){ //条件成立 if(条件){ }else{ } }else if(条件){ //条件不成立 if(条件){ //条件成立 }else if(条件){ //条件不成立 }else if(条件){ //code }else{ //code.. } }else if(条件){ //code }else{ //code.. }
习题
买奶茶,每第二杯半价,单价是10元.求总价.
10 5 10 5 10
- 求某年某月最大天数
switch..case
没有if..else if..else灵活
语法:
switch(变量)/ /byte short int char String enum[枚举类型] //包装类型Byte Short Integer Character case 值1: //code [break]; case 值2: //code [break]; case 值3: //code [break]; [default: //code.. [break];] }
当switch括号中的变量能够匹配到某个case后面的值的时候,那么就会进入到对应的case中去执行里面的程序
进入到某个case块中执行的过程中,只有遇到break语句才会跳出switch块.如果没有遇到break语句,那么程序会
自动进入到下一个case块中去执行.
default语句可以省略,也是可以随便放的,推荐放在末尾.如果switch括号中的变量没有匹配到任何的case后面的值
的时候,那么就会进入到default
循环语句
while
- 属于后置循环 - 先判断循环条件是否成立,如果成立,则进入到循环体中,否则不执行循环.
- 使用场景:当不知道循环多少次,但是知道循环退出的条件的时候 - 优先选择while循环.
语法:
while(条件){
// 循环体…
}
package tech.aistar.day03; /** * 本类用来演示: while循环 * @date: 2021/7/19 10:53 上午 */ public class WhileDemo { public static void main(String[] args) { //while可以代替for的使用 //'a'-'z' char c = 'a'; while(c <= 'z'){ System.out.println(c); c++; } System.out.println("====="); //'A' - 'Z' int n = 65; while(n<=90){//退出的条件 System.out.println((char)n); n++; } //1-10 int m = 1; //死循环... while(true){ //死循环的内部一定要有打破循环的语句 - break System.out.println(m); if(m==10) // 循环退出的条件 break; m++; } } }
练习
求俩个数的最大公约数
思路:20 12 -> 4 20 % 12 = 8 12 % 8 = 4 8 % 4 = 0
十进制转换二进制
for循环
属于后置循环
单层for
for(①表达式1;②表达式2;③表达式3){ //④循环体 } ①表达式1 - 循环过程中的变量的初始化操作.比如int i = 0; - 仅仅只会执行1次. ②表达式2 - 循环退出的条件.比如 i<=10 - 至少执行1次 ③表达式3 - 循环过程中,变量因子的变化.i++ - 有可能是不执行,可能执行 执行顺序①-②[成立]-④-③-②[成立]-④-③.....
怪异的写法
for(;;){ //死循环 - break打破循环的语句 } 三个表达式都是可以任意的省略不写,或者写到其他地方
for循环的复合形态
for(同时定义若干个变量;条件;表达式){ //循环体... }
嵌套for循环,嵌套的层数不建议超过三层.嵌套越多,性能越低.
2-1. 内外层无关 - 里面的for选中的使用可以单独执行.没有使用到外面for的循环的变量因子的.
2-2. 内外层相关 - 里面的for使用到了外面for循环的变量因子的
练习 - 打印所有的三位数.三位数由数字1,2,3,4组成.但是不能出现重复的.
每打印4个换一行
package tech.aistar.day03; /** * 本类用来演示: * 练习 - 打印所有的三位数.三位数由数字1,2,3,4组成.但是不能出现重复的. * * 每打印4个换一行 * @date: 2021/7/19 2:26 下午 */ public class ForExerciseDemo { public static void main(String[] args) { //定义一个计数器 int count = 0; for (int x = 1; x <=4 ; x++) { for (int y = 1; y <=4; y++) { for (int z = 1; z <=4; z++) { // System.out.print(x+""+y+z); if(x!=y & x!=z & y!=z){ System.out.print(x*100+y*10+z+"\t"); count++; // if(count % 4==0){ // System.out.println(); // } if(count == 4){ System.out.println(); count = 0; } } } } } } }
do..while..
属于前置循环 - 无论循环条件是否成立,优先先进入到循环体中执行一次.
然后再进行判断条件,决定下一次是否再次进入.
do{
//循环体…
}while(条件);
break语句
- break可以跳出swtich块
- break可以打破它所在的那一层循环
continue语句
出现在循环体中
跳过本轮循环,继续执行下一轮循环.