流程控制
顺序结构:
<!--程序从上到下执行,中间没有任何判断和跳转-->
分支结构:
<!--根据条件选择性的执行代码-->
if.....else和switch...case两种分支语句
else配对是:就近原则,最后的else也可以选择性的省略
switch:
1 switch(表达式){ 2 3 case 常量1: 4 5 执行语句块; 6 7 break/countione; 8 9 case 常量n: 10 11 执行语句块n; 12 13 break/countione; 14 default: 15 16 执行语句块; 17 18 }执行过程:初始化--循环体--迭代条件--循环条件....循环条件
break:可以使用在switch-case中,一旦执行就跳出
switch结构中的表达式:只能是以下六种类型之一:
byte,short,int,long,char,String,枚举类型,
使用场景:
凡是可以使用switch-case的结构,都可以转换为if-else,反之,不成立。当我们写分支结构的时候,即可以使用switch-case,(同时,switch中表达式的取值情况不太多)又可以使用if-else时,我们优先使用switch-case。原因:switch-case执行效率稍高!
三元运算符:(三目运算符)
(条件表达式) ?表达式1 :表达式2;
如果为true执行表达式1否则执行表达式2
循环结构:
while,do...while,for,foreach,四种循环语句
跳出循环的两个要素:
<!--第一:循环条件返回false-->
<!--第二:在循环体内执行break-->
<!--根据循环条件,重复性的执行某段代码-->
<!--在不确定循环次数的时候使用while或者do...while循环,写成死循环!!!-->
循环语句组成的四部分:
-
-
初始化部分
-
循环条件部分--------布尔类型的
-
循环体部分
-
迭代部分
for:
1 for(初始化;循环条件;迭代条件){ 2 3 循环体; 4 5 }
执行流程:初始化--循环条件--循环体--迭代条件....循环条件
<!--说明:通常情况下,循环结束都是因为循环条件返回false了-->
-
while:
1 初始化条件; 2 3 while(循环条件){ 4 5 循环体; 6 7 迭代条件;---千万不能丢否则死循环; 8 9 } 10 执行流程:初始化--循环条件--循环体--迭代条件.....循环条件
do...while:最少执行一次
1 初始化条件 2 3 do{ 4 5 循环体; 6 7 迭代条件; 8 9 }while(循环条件); 10 执行过程:初始化--循环体--迭代条件--循环条件....循环条件
使用场景:
for循环和while循环是可以相互转换的!
区别:初始化条件部分的作用范围不同
键盘输入:
关键字:Scanner
util包下
循环嵌套
<!--一般嵌套不会超过三层,最多两层-->
<!--将一个循环结构A声明在另一个循环结构B的循环体内,就形成了嵌套循环-->
外层控制行,内层控制列
1
99乘法口诀表
public static void main(String[] args) { 2 for (int i = 1; i <=9; i++) { 3 for (int j = 1; j <= i; j++) { 4 System.out.print(j + "*" + i +"=" + i*j +"\t"); 5 } 6 System.out.println(); 7 } 8 }
特殊关键字的使用
break;
使用范围:switch-case结构或者循环结构中
含义:结束当前循环,后面不可加执行语句
跳出指定循环:在循环前面加个标签(名字 :循环...)
break 后加上标签名
continue;
适用范围:只能用在循环结构中
含义:结束当次循环,后面不可加执行语句
return:
含义:结束方法;
随机数
Math.random();得到的是double类型的包含0.0不包含1.0的
生成随机两位整数:
int value = (int) Math.random() * 90 + 10);
原本得到:[0.0,1.0)-----左闭右开-->[0.0,90.0)---->[10.0,100.0)
公式:
[a,b] : (int) (Math.random() * (b -a +1) + a)