前言
本文是跟着韩B站顺平老师的java课做的学习笔记,方便复习,整理出来与大家一起学习,不足之处欢迎大家在评论区留言??
块作用域
用大括号括起来的若干条简单的java语句。块(block)确定了变量的作用域。
- 注意
- 一个块可以嵌套在另一个块中。
- 不能在嵌套的两个块中声明同名的变量。
顺序结构
程序从上往下逐行执行,中间没有任何判断与跳转。
分支结构
if-else
说明:执行语句只有一条可以省略大括号,但最好不要这么做。else子句与最邻近的if构成一组。

- 小栗子
import java.util.Scanner;
public class xiaoye{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的年纪:");
int age = scan.nextInt();
if (age >= 18){
System.out.println("你已经满18岁了,可以坐牢了");
}
else if (18 - age < 2) {
System.out.println("马上就轮到你了,莫慌");
}
else {
System.out.println("你还早,再等几年");
}
scan.close();
}
}
说明:
- 多分支可以没有 else ,如果所有条件表达式都不成立,没有执行入口。
- 如果有 else ,如果所有条件表达式都不成立,默认执行 else 块。
- 嵌套分支不建议超过3层,否则可读性不高。
import java.util.Scanner;
public class xiaoye{
public static void main(String[] args){
/*
1.判断分数,8.0以上入围
2.分男女赛道
*/
Scanner input = new Scanner(System.in);
System.out.println("请输入您的分数:");
double score = input.nextDouble();
if (score >= 8.0){
Scanner input2 = new Scanner(System.in);
System.out.println("请输入性别(男/女):");
char gender = input2.next().charAt(0);
if (gender == '男') {
System.out.println("请您进入男子组继续比赛。");
}
else if (gender == '女'){
System.out.println("请您进入女子组继续比赛。");
} else {
System.out.println("呀嘿,暂无对应赛道,下次一定。");
}
} else {
System.out.println("抱歉,无法入围。");
}
}
}

多重选择switch

- 基本语法
switch(表达式){
case 常量1: //当...
语句块1;
break;
...
case 常量n:
语句块n;
break;
...
default:
default语句块;
break;
}
- 说明
- 表达式对应一个值。
- case 常量1: 当表达式的值等于常量1,就执行语句块1。
- break: 跳出 switch 语句块。
- 如果一个 case 都没匹配上,就执行default。
- 小细节
- 表达式
数据类型要与 case 中常量保持一致。或者是可以自动转换成可以比较的类型。- switch(表达式) 中表达式的返回值必须是:byte、short、int、char、enum[枚举]、String
- case 常量/常量表达式:
- 不写 default 也是可以的。当没有 case 匹配的时候,啥也不输出。
- break: 跳出 switch 语句块,如果没有 break 语句,会发生穿透。
- 注意
如果 case 后面没有 break ,那么就会一直执行后面 case 里面的语句块–穿透,这常常会发生错误。如果感觉把握不住,if-else也是不错的。 如果非要用 switch 语句, 编译代码时可以考虑加上-Xlint:fallthrough选项
import java.util.Scanner;
public class xiaoye {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入1/2/3:");
int score = input.nextInt();
switch (score) {
case 1:
System.out.println("今天星期一,小猴穿新衣");
// break;
case 2:
System.out.println("今天星期二,小猴当小二");
break;
case 3:
System.out.println("今天星期三,小猴来巡山");
break;
default:
System.out.println("输入123以外的数字,小猴不出现喔");
break;
}
}
}

if-else与switch使用比较
- 如果判断的具体数值不多,而且符合
byte、short、int、char、enum[枚举]、String这6种类型,两种分支语句都可以用,但是建议 switch。 - 对于区间判断,对结果为 boolean 型判断,使用 if-else 更轻松。
循环结构

for循环
- 基本语法
for (循环变量初始化 ; 循环条件 ; 循环变量迭代){
循环体(可以多条语句);
}
执行顺序:变量初始化->循环条件->循环体->变量迭代
- 小tips
- 循环条件返回的是布尔值的表达式。
- 循环变量初始化可以写到外面,循环变量迭代可以写到循环体里面:初始化 ; for(; 循环条件 ?{ 循环变量迭代; },这种写法就是for循环运行逻辑。
- 循环初始值可以有多条初始化语句,但要求类型一致,中间用逗号隔开;循环变量迭代也可以有多条。
for(int i=0,j=0;i<3;i++,j+=2){
System.out.println("i="+i+'\t'+"j="+j);
}
- for( ; ; ) 死循环。
while循环
- 基本语法
while(循环条件){
循环体;
循环变量迭代;
}
do…while循环
- 基本语法
do{
循环体;
循环变量迭代;
} while (循环条件);
- 说明
- 先执行,再判断。循环体至少执行一次。

多重循环
循环中有循环,前面的for、while、do…while可以作为彼此的外(内)层循环。一般循环不要超过三层。
- 栗子01-打印金字塔
/*
*
* *
*****
*/
/*
1.先来半个塔,刚好层数与每层个数相同
for(int i=1;i<=4;i++){ //层数
for(int j=1;j<=i;j++){ //每层个数
System.out.print("*");
}
System.out.print('\n');
2.那一整个塔的层数 i 与每层个数 j 的关系:j=2*i-1
*
***
*****
*******
3.把2中的塔扶正,打印空格,那么每层空格数是最后一层中心点的前面*号的个数:总层数-当前层数
//在打印*之前先打空格
for(int k=1;k<=level-i;k++){
System.out.print(" ");
}
4.空心的金字塔:每层就两个,开头和末尾,其余打空格
*/
import java.util.Scanner;
public class xiaoye {
public static void main(String[] args) {
// 打印金字塔
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入金字塔层数:");
int level = myScanner.nextInt();
for(int i=1;i<=level;i++){ //层数
for(int k=1;k<=level-i;k++){ //总层数-当前层数
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){ //每层个数
if(j==1 || j==(2*i-1) || i==level){
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.print('\n');
}
}
}

- 栗子02-打印菱形
import java.util.Scanner;
public class xiaoye {
public static void main(String[] args) {
// 打印菱形
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入菱形层数(奇数层):");
int level = myScanner.nextInt();
int num = ((level+1)/2);
for(int i=1;i<=num;i++){ //层数
for(int k=1;k<=num-i;k++){ //空格数=总层数-当前层数
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){ //每层个数
if(j==1 || j==(2*i-1)){
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.print('\n');
}
for(int i=level-num;i>=1;i--){ //剩余层数
for(int k=1;k<=num-i;k++){ //该层空格数=该层数-中间层数
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){
if(j==1 || j==(2*i-1)){
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.print('\n');
}
}
}

break和continue
- break:外跳。
只能跳出语句块,不能跳入语句块。
- 带标签的 break:希望直接跳出多重嵌套的循环语句,
标签必须放在希望跳出的循环最外层之前,还要给他加上冒号。这个标签实际上还可以用到 if 语句中。- continue:内跳。将语句控制移到最内层循环首部,或跳到 for 循环的变量迭代更新处。
冲冲冲!!!??????
版权声明:本文为weixin_48023487原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
