Java基础学习笔记(三)
Java的基本语法
(一)选择结构(switch语句)
Java除了提供第一种选择结构if语句外,还提供了switch语句。
格式如下:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
/*
其中,switch是关键字,声明这是switch语句;
表达式:可以是byte,short,int,char,在jdk5以后可以是枚举,jdk7以后可以是字符串;
case:后面的值就是要和表达式进行比较的值;
break:表示程序到这里中断,跳出switch语句;
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else;
*/
switch语句执行流程:
执行流程:
A:首先计算表达式的值。
B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。
C:如果没有匹配,就执行default的语句体n+1。
注意事项:
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
接下来通过几个案例来演示switch语句用法:
public class MySwitchDemo {
public static void main(String[] args) {
/*
案例1:做一个键盘录入1-7,然后输出对应的星期,用switch做
*/
//首先控制台打出1句话提示输入
System.out.println("请输入一个1-7之间的数字:");
//然后创建键盘录入对象并导包
Scanner sc = new Scanner(System.in);
//然后定义一个int类型变量接收键盘录入的数字
int enterNum = sc.nextInt();
//接下来用switch语句判断数字是几,然后输出对应得星期
switch(enterNum) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
//如果前面的都沒有,就说明输入的数字不在1-7之间
default:
System.out.println("你输入的数字有误!");
break;
}
}
}
注意,上面的代码中在每一个case值后面的语句体被执行后一定要break跳出switch语句,否则就可能发生case穿透,即代码又继续向下执行,最后出现一些意外的输出结果。
if语句和switch语句各自的场景
A:if
针对boolean类型的判断
针对一个范围的判断
针对几个常量的判断
B:switch
针对几个常量的判断
(二)循环结构(for语句)
Java的循环结构有3种语句,先来看第一种也是最常用的语句,for循环。
格式:
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
执行流程:
a:执行初始化语句
b:执行判断条件语句
如果这里是true,就继续
如果这里是false,循环就结束
c:执行循环体语句
d:执行控制条件语句
e:回到b
注意事项
a:判断条件语句无论简单还是复杂,结果是boolean类型
b:循环体语句如果是一条,可以省略大括号,但是不建议
c:有分号就没有左大括号,有左大括号就没有分号
接下来来几个for循环语句练习:
//输出10次HelloWorld
for(int x = 0;x < 10;x++) {
//其中x是初始化变量,x<10是判断条件语句,x++是控制语句
System.out.println("HelloWorld");
}
//求1-100的和
int sum = 0; //定义sum变量存储结果
for(int x = 1;x <= 100;x++) {
sum += x;
}
System.out.println(sum); //结果是5050
// 再来个两层for循环输出五层的三角形
for (int x = 0; x < 5; x++) {
// 第一层循环控制层数,第二层循环控制每层的个数
for (int y = 0; y <= x; y++) {
//这里为了输出在一行上使用了print方法
System.out.print("*" + "\t");
}
//每次将每行上的所有星号输出完毕后换行,直接空输出println就行
System.out.println();
}
/*
输出结果:
*
* *
* * *
* * * *
* * * * *
*/
(三)循环结构(while语句)
基本格式
while(判断条件语句) {
循环体语句;
}
扩展格式:
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
for和while的区别
a:使用上的区别
for语句的那个控制条件变量,在循环结束后不能在使用了。
而while的可以继续使用。
b:理解上的区别
for适合于一个范围的判断
while适合次数不明确的
范例:
// while语句循环输出10次HelloWorld
int x = 0;
while (x < 10) {
System.out.println("HelloWorld");
x++;
}
(四)循环结构(do…while语句)
基本格式:
do {
循环体语句;
}while(判断条件语句);
扩展格式:
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
三种循环的区别
a:do…while循环至少执行一次循环体
b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体
循环使用的注意事项(死循环)
A:一定要注意修改控制条件,否则容易出现死循环。
B:最简单的死循环格式
a:while(true){…}
b:for(;; ){}
(五)控制跳转语句
(1)break:中断的意思
A:用在循环和switch语句中,离开此应用场景无意义。
B:作用
a:跳出单层循环
b:跳出多层循环,需要标签语句的配合
(2)continue:继续
A:用在循环中,离开此应用场景无意义。
B:作用
a:跳出单层循环的一次,可以继续下一次
(3)return:返回
A:用于结束方法的。
B:一旦遇到return,方法就不会在继续往后执行。