Java基础语法(二)
程序流程控制
一、顺序结构
解释:程序默认语句,按照代码先后顺序执行语句
二、分支结构
1.if分支
解释:根据判定结果(真或假)决定执行每个分支的代码。
三种格式
(1)if语句
公式1:
if(条件表达式){
代码
}
(2)if else语句
公式2:
if(条件表达式){
代码
}else{
代码
}
(3)if else if语句
公式3:
if(条件表达式){
代码
}else if {
}
2.switch分支
解释:也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好。
流程:
- 先执行表达式的值,拿着这个值与case后面的值进行匹配;
- 匹配哪个case的值为true就执行那个case,遇到break就跳出switch
- 如果case的值都不匹配则执行default代码。
格式:
switch(表达式){
case 值1:
执行代码1;
break;
case 值2:
执行代码2;
break;
...
case 值n-1:
执行代码n-1;
break;
default:
执行代码n;
//break
}
2.1 if、switch两者适合的场景
- if语句功能大于switch语句;
- if适合做区间匹配;
- switch适合做:值匹配的分支选择、代码优雅。
2.2 switch的注意事项
- 表达式类型只能是byte,int,char,JDK5开始支持枚举,JDk7开始支持String、不支持double、float、long;
- case给出的值不允许重复,且只能是字面量,不能是变量。
- 不要忘记写break,否则会出现穿透现象。
2.3 switch的穿透性
解释:如果代码执行到没有写break的case块,执行完后将直接进入下一个case块(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。
三、循环结构
1.for循环
格式
for (初始化语句; 循环语句 ;迭代语句){
循环体语句;
}
流程图:
2.while循环
格式:
初始化语句;
while(循环条件){
循环体语句;
迭代语句;
}
注意:没有迭代语句一直进入循环
什么时候用for循环,什么时候用while循环。
- 功能上是完全一样的,for能解决的while也能解决,反之亦然。
- 使用规范:知道循环几次:使用for;不知道循环几次建议使用while;
3.do- while循环
先执行再判断循环条件
格式:
初始化语句
do {
循环语句;
迭代语句;
}while(循环条件)
流程图:
do-while循环的特点:一定会先执行一次循环体。
for循环中,控制循环的变量只在循环中可以使用。while循环中,控制循环的变量在循环后还可以继续使用。
4.死循环
一直循环的执行下去,如果没有干预不会停止下来。
写法:
for(;;){
System.out.println("hello word");
}
//经典做法
while(true){
System.out.println("hello word");
}
do{
System.out.println("hello word");
}while(true);
嵌套循环
循环中包含循环
public static void main(String[] args) {
//目标:理解嵌套循环的执行流程
//场景:对自己喜欢的固定说几天我爱你,每天说3句我爱你
Scanner sc= new Scanner(System.in);
System.out.println("你要爱我几天就说几天");
int love=sc.nextInt();
int count=17;
for (int i = 0; i < love; i++) {
System.out.println("-----这是第"+count+"天你说爱我");
for (int j = 0; j < 3; j++) {
System.out.println("我爱你");
}
count++;
}
}
特点:外部循环每执行一次,内部循环全部执行完一次。
四、跳转关键字
break:跳出并结束当前所在的循环的执行。
continue:用于跳出当前循环的当次执行,进入下一次循环。
注意事项:
- break:只能用于结束所在循环,或者结束所在switch分支的执行
- continue:只能在循环中进行使用。
五、随机数random类。
作用:用于在程序中获取随机数技术。
使用步骤:
-
导包:告诉程序去JDK的哪个包找随机数技术
-
写一行代码代表得到随机数对象。
-
调用随机数的功能获得0-9的随机数
package com.itheima.random; import java.util.Random; public class RandomDemo1 { public static void main(String[] args) { //学会使用java提供的随机数类Random //1.导包 //2.创建随机数对象 Random r =new Random(); //3.调用nextInt(方法),可以返回一个整型的随机数给你 for (int i =0;i<20;i++) { int we=r.nextInt(20); System.out.println(we); } } }
注意:nextInt(n)功能只能生成:0至n-1之间的随机数,不包含n
random生成区间随机数的技巧:减加法
package com.itheima.random;
import java.util.Random;
import java.util.Scanner;
public class RandomDemo2 {
public static void main(String[] args) {
Random r = new Random();
int luck=r.nextInt(100)+1;
Scanner sc=new Scanner(System.in);
while (true){
System.out.println("请输入一个整数");
int guess=sc.nextInt();
if (guess>luck){
System.out.println("你猜测的数字过大");
}else if (guess<luck){
System.out.println("你猜的数字过小");
}else {
System.out.println("你猜对了");
break;
}
}
}
}