使用不同的关键字/语法来控制代码的执行顺序/流程
代码从上向下依次执行
到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。代码写得多,程序运行的少。
某段代码相同或者相似,使用相同的逻辑。使用一定的格式,来完成相同代码的反复执行
格式一(if)
if(关系表达式){ 语句体; }格式二(if…else)
if(关系表达式) { 语句体1; }else { 语句体2; }格式三(if…else if …else)
if (判断条件1) { 执行语句1; } else if (判断条件2) { 执行语句2; } ... }else if (判断条件n) { 执行语句n; } else { 执行语句n+1; }(1)switch结构 格式
switch (表达式){ case 目标值1: 执行语句1 break; case 目标值2: 执行语句2 break; ...... case 目标值n: 执行语句n break; default: 执行语句n+1 break; }(2)case穿透 在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。
public static void main(String[] args) { int week = 2; switch (week) { case 1: case 2: case 3: case 4: case 5: // 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同 System.out.println("今天是工作日"); break; case 6: case 7: // 当 week 满足值 6、7 中任意一个时,处理方式相同 System.out.println("今天是休息日"); break; } }(3)if 和 switch 的区别 相同点:if 语句和 switch 语句都可以表达分支结构
不同点: 1、if 语句格式相对灵活,更加强大,switch 语句相对弱小。所有的switch语句都可以被if语句替代。 2、if 语句更多的是做一些连续性的判断,而 switch 语句更多的是做一些离散性的匹配 3、if 语句每次都需要获取表达式的值,而 switch 只获取一次表达式的值,所以相对来说,switch 的效率高一些。
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在一定的时候让循环判断条件值为false,从而结束循环,否则循环将一直执行下去,形成死循环。
Java中三种循环结构: 1 for循环 2 while循环 3 do while循环
格式
for(初始化表达式①; 布尔表达式②; 步进表达式④){ 循环体③ }执行流程 执行顺序:①②③④>②③④>②③④…②不满足为止。 ①负责完成循环变量初始化 ②负责判断是否满足循环条件,不满足则跳出循环 ③具体执行的语句 ④循环后,循环条件所涉及变量的变化情况
格式
for (初始化语句1; 条件表达式1; 初始化变量1的自增) { for ( 初始化语句2 ; 条件表达式2 ; 初始化变量2的自增 ) { 循环体语句; } }执行流程: 1、初始化语句1 2、判断条件表达式1,计算如果为false,外层循环结束 3、判断条件表达式1,计算如果为true,初始化语句2 4、计算条件表达式2,计算结果为false,内循环结束,执行初始化变量1的自增,回到第2步 5、计算条件表达式2,计算结果为true,执行循环体语句, 6、执行初始化变量2的自增,回到第4步
格式
初始化表达式① while(布尔表达式②){ 循环体③ 步进表达式④ }执行流程: 执行顺序:①②③④>②③④>②③④…②不满足为止。 ①负责完成循环变量初始化。 ②负责判断是否满足循环条件,不满足则跳出循环。 ③具体执行的语句。 ④循环后,循环变量的变化情况。
for 和while的区别 1.while与for可以互换,区别在于for为了循环而定义的变量在for循环结束时就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
2.确定循环次数推荐使用for循环 不定循环次数推荐while
格式
初始化表达式① do{ 循环体③ 步进表达式④ }while(布尔表达式②);执行流程 执行顺序:①③④>②③④>②③④…②不满足为止。 ①负责完成循环变量初始化。 ②负责判断是否满足循环条件,不满足则跳出循环。 ③具体执行的语句 ④循环后,循环变量的变化情况
while循环与do…while循环的区别 while:先判断条件,只有条件满足才执行循环体。 do while: 先执行循环体,再判断条件,条件满足,再继续执行循环体。 简单一句话:do while:无论条件是否满足,循环体至少执行一次。
字符串:由字符组成的串,string是引用数据类型。
Java中提供了Math类中的random()方法,用来生成一个0到1之间的随机数 [0,1) 另外Java通过了一个Random类专门用来生成随机数
Math 类 : double x = Math.random(); 产生一个0到1之间的随机数,包括0,不包括1
Random类: 1.创建实例格式:Random 变量名 = new Random(); 2. import导包:所属包java.util.Random 3. 调用方法int number = r.nextInt(10);// [0,10) 产生的数据在0到10之间,包括0,不包括10。
具有某种特定功能的代码段 好处: 1、提高了代码的复用性 2、提高了代码的封装性,大括号中 3、简化了软件设计的思维难度
格式
修饰符 返回值类型 方法名称(参数列表) { 方法体语句; return语句; }说明 1、修饰符:现在全都写成public static
2、返回值类型:方法具有功能,有可能会有一些产出,就需要将数据返回给调用者。调用者需要知道生产出来的数据的数据类型。
3、方法名称:给这段代码起的名字。只要是一个合法的标识符即可。第一个单词的首字母小写,从第二个单词开始首字母大写。动词、动宾结构。
4、参数列表:这段代码要完成功能,可能会需要一些资源。在参数列表中,需要定义一些变量,内存中表示为容器,在调用本方法的时候,会由外界传入数据,存储到这些变量容器中。使用变量名,表示那些将来可能传入的数据。
5、方法体语句:真正要完成该方法功能的执行逻辑。
6、return语句:最终生产出来的结果,要返回给调用者,使用return语句返回。如果没有任何生产内容,就可以写一个return;用于表示方法结束。
格式 直接书写方法名称即可 方法名称(实际参数);
方法调用的三种形式: 1、直接调用:表示某些内容的执行,而没有生产结果的情况 2、输出调用:方法的返回值,需要打印。如果这个结果只打印一次,不做其他的操作。 3、赋值调用:方法的返回值,使用某个变量来接收。如果这个结果需要反复使用。
方法调用总体特点: 方法不调用就不会执行
方法定义 1、方法不能嵌套定义,方法都是定义在主方法的下面。 2、方法的先后没有区别 3、方法的定义是平级关系 4、方法可以嵌套调用,甚至可以自己调用自己
参数列表 1、形式参数:在定义方法时使用,需要加上数据类型的参数,也就是对于变量进行声明。各个变量之间,使用逗号分隔。 2、实际参数:在方法调用时使用,不能加上数据类型的参数,也就是对于变量进行赋值。各个实际参数之间,也使用逗号分隔。顺序必须和定义的方法的形式参数的顺序一致。
return语句 1、语句表达方法结束了;表示方法的产出内容。 2、如果方法没有具体的返回内容,可以写成return; 此时的return语句可以省略。返回值类型必须写成void。 3、如果方法有具体的返回内容,那么return后面就需要加上返回的那个数据。返回值类型必须和return语句后面的数据的数据类型一致。 4、return语句返回数据,返回给调用者。谁来调用当前方法,当前方法就将数据返回给谁。
那这种同一个类中的同名方法,就叫做方法重载overload
方法重载overload:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。 参数列表不同:个数不同/数据类型不同/顺序不同。 重载方法调用:JVM通过方法的参数列表,调用不同的方法。
1.简化代码 2.重载方法只是对原有方法的一种升级,所以方法名相同可以方便原有使用