代码的运行是依次从上至下的执行运行的
第一种格式
if(关系表达式){
语句体;
}
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体
3、如果关系表达式的值为false就不执行语句体
4、继续执行后面的其他语句
Scanner sc = new Scanner(System.in);
System.out.printIn("请输入女婿的酒量");
int wine = sc.nextInt();
if(wine>){
System.out.printIn("哎呦,小伙子,不错呦~")
}
if的注意点:
1、大括号的开头可以另起一行书写,但是建议写在第一行的末尾
2、在语句体中,如果只有一行代码,大括号可以省略不写
3、如果对一个布尔类型的变量进行判断,不要用==号
第二种格式
if(关系表达式){
语句体1;
} else {
语句体2;
}
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体1
3、如果关系表达式的值为false就执行语句体2
4、继续执行后面的其他语句
Scanner sc =new Scanner (System.in);
System.out.printIn("请录入身上的钱");
int money=sc.nextInt();
if(money>=100){
System.out.printIn("吃网红餐厅");
}else {
System.out.printIn("吃经济实惠的沙县小吃");
}
if语句的第三种格式
if(关系表达式1){
语句体1
}else if(关系表达式2){
语句体2;
}
...
else {
语句体n+1;
}
1、首先机选关系表达式1的值
2、如果为true就执行语句体1;如果为false就计算关系表达式2的值
3、如果为true就执行语句体2;如果为false就计算关系表达式3的值
4、…
5、如果所有的关系表达式结果都为false,就执行语句体n+1;
switch(表达式){
case 值1:
语句体1;
break;
case 值1:
语句体1;
break;
...
default:
语句体n+1;
break;
}
执行流程
1、首先计算表达式的值
2、依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
3、如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。
格式说明
1、表达式:(将要匹配的值)取值为byte、short、int、char。
JDK5以后可以是枚举,JDK7以后就可以是string。
2、case:后面跟的是要和表达式进行比较得值(被匹配的值)。
3、break:表示中断,结束的意思,用来结束switch语句。
4、default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
5、case后面的语句只能是字面量,不能是变量。
6、case给出的值不允许重复。
就是语句体中没有写break导致的
执行流程:
首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配/
如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
如果没有发现break,那么程序会继续执行下一个case的语句体,一直遇到break或者右大括号为止。
int number = 1;
switch(number){
case 1:
System.out.priintIn("一");
break;
case 2:
System.out.priintIn("二");
break;
case 3:
System.out.priintIn("三");
break;
defalut:
System.out.printIn("没有这种选项");
break;
}
等价于
int number = 1;
switch(number){
case 1 -> System.out.printIn("一");
case 2 -> System.out.printIn("二");
case 3 -> System.out.printIn("三");
default -> System.out.printIn("没有这种选项");
}
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
执行流程
1、执行初始化语句
2、执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,执行循环体语句
3、执行条件控制语句
4、回到2继续执行条件判断语句
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
循环下面的语句
初始化语句只执行一次
判断语句为true,循环继续
判断语句为false,循环结束
for和while的区别
运行规则都是一样的
for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
for(;;){
System.out.printIn("学习");
}
while(true){
System.out.printIn("学习");
}
do{
System.out.printIn("学习");
}while(true);
continue:跳过本次循环,继续执行下次循环。
break:结束整个循环。
数组:是一种容器,可以用来存储同种数据类型的多个值
数组容器在存储数据的时候,需要结合隐式转换考虑
建议:容器的类型,和存储的数据类型保持一致
在内存中,为数组容器开辟空间,并将数据存入容器中的过程。
完整格式
数据类型[]数组名=new 数据类型[]{元素1,元素2,元素3...};
简写:
数据类型[]数组名={元素1,元素2,元素3...};
初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组默认初始化值的规律
整数类型:默认初始化值0
小数类型:默认初始化值 0.0
字符类型:默认初始化值 ‘/u0000’ 空格
布尔类型:默认初始化值 false
引用数据类型:默认初始化值 null
动态初始化:手动指定数组长度,由系统给出默认初始化值。
适用场景:只明确元素个数,不明确具体数值,推荐使用动态初始化
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组长度
适用场景:需求中已经明确了要操作的具体数据,直接静态初始化即可
double[] arr6={1.93,1.75,1.73,1.81};
System.out.printIn(arr6);//打印的是数组的地址值
输出为[D@776ec8df
[:表示当前是一个数组
D:表示当前数组里面的元素都是double类型的
@:表示一个间隔符号(固定格式)
776ec8df:这是数组真正的地址值,(十六进制)
平时我们习惯性的会把这个整体叫做数组的地址值
利用索引对数组中的元素进行访问
1、获取数组里面的元素
格式:数组名[索引]
2、把数据存储到数组当中
格式 :数组名[索引]=具体数据/变量;
细节:一旦覆盖之后,原来的数据就不存在了。
将数组中所有的内容取出来,取出来之后可以(打印,求和,判断…)
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印
快捷模式:
数组名.fori
当访问了数组中不存在的索引,就会引发索引越界异常。