一、Java基础之二——基础语法(二)

7 篇文章 0 订阅
6 篇文章 0 订阅

1、流程控制

1.1 顺序结构

顺序结构就是程序从上到下逐行执行,中间没有任何判断和跳转。如果方法体中的多行代码之间没有流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行

2、分支结构

2.1 if语句
  • 第一种格式:if
if(条件表达式){
  	语句体;

判断条件表达式是true还是false–>true则执行语句体,false则不执行语句体

  • 第二种格式:if…else
if(关系表达式) { 
  	语句体1;
}else {
  	语句体2;
}
# 上式转化成三元运算符形式
# 条件表达式?语句体1:语句体2;

判断条件表达式是true还是false–>true则执行语句体1,false则执行语句体2

  • 第三种格式:if…else if…else
if (判断条件1) {
  	执行语句1;
} else if (判断条件2) {
  	执行语句2;
}
...
}else if (判断条件n) {
 	执行语句n;
} else {
  	执行语句n+1;
}

判断关系表达式1,为true则执行语句体1,然后结束当前多分支;如果是false,继续判断关系表达式2,直到遇到第一个关系表达式n为true的时候,则执行执行语句n,然后结束当前多分支;如果所有的判断条件都不满足,则执行else中的代码块

  • 第四种格式:if…else嵌套
	//省略{}的情况,else中嵌套了一个完整的多分支结构,也算是一个语句,称为复合语句,所以也可以省略{}
	public static void main(String[] args) {	
	    int score = 89;
	    if(score<0 || score>100)
	      	System.out.println("你的成绩是错误的");
	    else
	    	if(score>=90){
		      	System.out.println("你的成绩属于优秀");
		    }else if(score>=80){
		      	System.out.println("你的成绩属于好");
		    }else if(score>=70){
		      	System.out.println("你的成绩属于良");
		    }else if(score>=60){
		      	System.out.println("你的成绩属于及格");
		    }else {
		      	System.out.println("你的成绩属于不及格");
		    }
	}
2.2 switch选择结构

语法格式

switch(表达式){
    case 常量值1:
        语句块1;break;case 常量值2:
        语句块2;break;】   
    。。。
    //default可有可无,执行了default之后switch分支结构执行结束default:
        语句块n+1;
        //break可有可无,default执行后会直接结束,所以有没有default都可以break;】
     】
}

执行流程:

①switch(表达式)的值与case后面的某个常量值匹配,就从这个case进入;

②switch(表达式)值与case后面的所有常量值都不匹配,U型你找default分支进入,不关default在哪里

一旦从以上两个入口进入switch,就会顺序往下执行,直到遇到一下出口,即可能发生贯穿

①自然出口:遇到了switch的结束}

②中断出口:遇到了break等

注意:

switch(表达式)的值的类型,只能是4中基本数据类型(byte,short,int,char),两种引用类型(JDK1.5之之后枚举,JDK1.7之后String)

case后面必须是常量值,而且不能重复

public class TestOne {
    public static void main(String[] args) {
        int month = 5;

        switch(month) {
            case 1:
            case 2:
            case 12:
                System.out.println("冬季");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            default:
                System.out.println("你输入的月份有误");
                break;
        }
    }
}

3、循环结构

3.1 while循环

while循环适合用于循环次数不确定,先判断后执行。即先判断,后执行循环体,满足循环条件,进入循环体

//第一种情况
while (循环条件语句①) {
    循环体语句②;
}
while(true){
     循环体语句;//如果此时循环体中没有跳出循环的语句,也是死循环
}
//第二种情况
初始化语句①;
while (循环条件语句②) {
    循环体语句③;
    迭代语句④;
}

3.2 do…while循环

do-while循环适用于循环次数不确定,先执行后判断。先执行一次循环体,再进行判断。满足条件则继续执行循环体,否则退出循环

//循环体语句至少会执行1次
do {
    循环体语句①;
} while (循环条件语句②);

初始化语句①
do {
    循环体语句②;
    迭代语句③;
} while (循环条件语句④)

3.3 for循环

注意:

(1)for(;;)中的两个;是不能多也不能少

(2)循环条件必须是boolean类型

(3)如果循环条件语句②省略的话,就默认为循环条件成立

for(初始化语句①; 循环条件语句②; 迭代语句④){
	循环体语句③
}
for(;;){
    循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环
}
/*
执行步骤
1、执行初始化语句①,完成循环变量初始化,初始化语句也可以写在外面
2、执行循环条件语句②,看循环条件语句是true还是false
	true则执行第三步
	false则退出for循环
3、执行循环体语句③
4、执行迭代语句④,针对循环变量重新赋值
5、根据循环变量的新值,重新从第二步开始再执行一次
*/

3.4 循环语句的区别

  • 从循环次数角度分析
    1. do…while循环至少执行一次循环体语句
    2. for和while循环先循环条件语句是否成立,然后决定是否执行循环体,至少执行零次循环体语句
  • 从循环变量的生命周期角度分析
    1. for循环的循环变量在for()中声明的,在循环语句结束后,不可以被访问;
    2. while和do…while循环的循环变量因为在外面声明的,所以while和do…while结束后可以被继续使用的;
  • 如何选择
    1. 遍历有明显的循环次数(范围)的需求,选择for循环
    2. 遍历没有明显的循环次数(范围)的需求,循环while循环
    3. 如果循环体语句块至少执行一次,可以考虑使用do…while循环
      -4.本质上:三种循环之间是可以互相转换的,都能实现循环的功能
  • 三种循环结构都具有四要素:
    (1)循环变量的初始化表达式
    (2)循环条件
    (3)循环变量的修改的迭代表达式
    (4)循环体语句块

4、控制语句break和continue

  • break使用场景:终止switch或者当前循环
    • 在选择结构switch语句中
    • 在循环语句中
    • 离开使用场景的存在是没有意义的
  • continue使用场景:结束本次循环,继续下一次的循环

5、循环嵌套

/*
1
22
333
4444
55555
*/
	public static void main(String[] args){
		for(int i=1; i<=5; i++){
			//内循环控制每一行打印的数字
			/*
			当i=1,外循环第1次,第1行,1,    	1个i,j=1
			当i=2,外循环第2次,第2行,22		2个i,j=1,2
			当i=3,外循环第3次,第3行,333		3个i,j=1,2,3
			当i=4,外循环第4次,第4行,4444		4个i,j=1,2,3,4
			当i=5,外循环第5次,第5行,55555	5个i,j=1,2,3,4,5
			说明,打印的是i的值,打印几个i
			j=1,j<=i
			*/
			for(int j=1; j<=i; j++){
				System.out.print(i);
			}
			System.out.println();
		}
	}

练习1:打印九九乘法表

public class TestOne {
    public static void main(String[] args) {
        /**
         * 打印九九乘法表
         * */
        for (int i = 1; i < 10; i++) {
            for(int j=1;j<=i;j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
        }
    }
}

在这里插入图片描述
练习2:打印直角三角形

public class TestOne {
    public static void main(String[] args) {
        /**
         * 打印直角三角形
         * */
        for (int i = 1; i <= rows; i++) {
            for(int j=1;j<=i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

在这里插入图片描述
练习3:打印等腰直角三角形

public class TestOne {
    public static void main(String[] args) {
         /**
         * 打印等腰三角形
         * */
        for (int i = 1; i <= rows; i++) {
            for(int j=rows;j>=i;j--){
                System.out.print(" ");
            }
            for(int j=1;j<=(2*i-1);j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

在这里插入图片描述
练习4:打印菱形

public class TestOne {
    public static void main(String[] args) {
         /**
         * 打印菱形
         * */
        for (int i = 1; i <= rows; i++) {
            for(int j=rows;j>=i;j--){
                System.out.print(" ");
            }
            for(int j=1;j<=(2*i-1);j++){
                System.out.print("*");
            }
            System.out.println();
        }
        for (int i = 1; i <rows; i++) {
            for(int j=i+1;j>=1;j--){
                System.out.print(" ");
            }

            for(int j=2*(rows-i)-1;j>=1;j--){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

在这里插入图片描述
完整代码

public class TestOne {
    public static void main(String[] args) {
        nineNineMultiCal();
        rightTriangle(5);
        isoscelesTriangle(5);
        diamond(5);
    }

    public static void nineNineMultiCal(){
        /**
         * 打印九九乘法表
         * */
        for (int i = 1; i < 10; i++) {
            for(int j=1;j<=i;j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
        }
    }

    public static void rightTriangle(int rows){
        /**
         * 打印直角三角形
         * */
        for (int i = 1; i <= rows; i++) {
            for(int j=1;j<=i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }

    public static void isoscelesTriangle(int rows){
        /**
         * 打印等腰三角形
         * */
        for (int i = 1; i <= rows; i++) {
            for(int j=rows;j>=i;j--){
                System.out.print(" ");
            }
            for(int j=1;j<=(2*i-1);j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }

    public static void diamond(int rows){
        /**
         * 打印菱形
         * */
        for (int i = 1; i <= rows; i++) {
            for(int j=rows;j>=i;j--){
                System.out.print(" ");
            }
            for(int j=1;j<=(2*i-1);j++){
                System.out.print("*");
            }
            System.out.println();
        }
        for (int i = 1; i <rows; i++) {
            for(int j=i+1;j>=1;j--){
                System.out.print(" ");
            }

            for(int j=2*(rows-i)-1;j>=1;j--){
                System.out.print("*");
            }
            System.out.println();
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两个猫崽子和你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值