流程控制语句及方法基础

本文详细介绍了Java编程中的流程控制语句,包括顺序、选择(if、switch)和循环(for、while、do...while)结构。通过实例展示了如何使用这些结构进行条件判断和循环操作。此外,还探讨了方法的概念,包括有返回值和无返回值类型的方法,并解释了方法调用的不同方式。文章最后提到了方法的兼容类型问题和注意事项。
摘要由CSDN通过智能技术生成

1.流程控制语句

  • 顺序结构:从上到下 从左至右
  • 选择结构:根据条件的选择,控制一些代码执行
  • 循环结构:重复执行一些代码

1.1if语句

1.1.1单选择|单分支

满足条件要求,就执行一些代码,不满足不执行

if (条件表达式) {

​ 语句体;

}

当语句体只有一句时,{}可以省略。

1.1.2双选择|双分支

if (条件表达式) {

​ 语句体1;

}else {

​ 语句体2;

}

1.1.3多选择|多分支

if (条件表达式1) {

​ 语句体1;

}else if (条件表达式2) {

​ 语句体2;

}…else{

​ 语句体n;

}

import java.util.Random;//导入Random类
public class IfDemo {//IfDemo类的开始
    public static void main(String[] args) {//主方法开始
        Random ran = new Random();//新建一个Random类对象
        int a = ran.nextInt(131-50+1)+50;//在[50,131]区间随机取一个整数
        int b = ran.nextInt(131-50+1)+50;//在[50,131]区间随机取一个整数
        int c = ran.nextInt(131-50+1)+50;//在[50,131]区间随机取一个整数
        System.out.println(a + "\n" + b + "\n" + c);//输出三个随机整数
        /*
            通过If多分枝结构判断三个数大小,并判断奇偶
        */
        if(a>b && a>c){//条件判断
            System.out.println("最大值是:" + a);
            if (a%2 == 0){
                System.out.println("a是偶数");
            }else{
                System.out.println("a是奇数");
            }
        }else if(a>b && a<c){
            System.out.println("最大值是:" + c);
            if (c%2 == 0){
                System.out.println("c是偶数");
            }else{
                System.out.println("c是奇数");
            }
        }else{
            System.out.println("最大值是:" + b);
            if (b%2 == 0){
                System.out.println("b是偶数");
            }else{
                System.out.println("b是奇数");
            }
        }
    }
}

1.2switch语句

switch (表达式) {

​ case 值1:

​ 语句体1;

​ case 值2:

​ 语句体2;

​ .

​ default:

​ 语句体n;

​ break;

}

/*
    根据月份,输出对应的季节
        3~5  春天
        6~8  夏天
        9~11 秋天
        12~2 冬天
 */
import java.util.Scanner;
public class Swi2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num= sc.nextInt();
        switch(num){
            case 12:
            case 1:
            case 2:
                System.out.println("冬天");//当不存在break时,会发生穿透,即从满足条件的case语句开始执行,下面的case不判断直接执行语句体,知道遇到break才会停止。
            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("秋天");
            default:
                System.out.println("请输入正确月份");
        }
    }
}

1.3循环结构

  • for 循环
  • while循环
  • do…while循环
1.3.1for 循环

​ 当明确循环次数时首先选择使用for循环语句。

for循环语句格式:

for(条件初始化;条件判断;条件变化){
重复执行的循环体语句;
}

执行流程:
1.条件初始化;
2.条件判断,满足条件,执行循环体语句,不满足条件直接结束循环;
3.条件变化;
重复执行2,3步骤。

​ 注意: for循环的条件i是属于当前这个循环的,可以在循环的(),{}中使用循环体中语句只有一句,前后的{}可以省略。

/*
for (条件初始化;条件判断;条件变化){
		重复执行的语句体;
}
*/

public class ForDemo {
    public static void main(String[] args){
        int sum = 0;
        for(int i = 1;i <= 10;i++){
            sum +=i;
            System.out.println("aaa+" + i);
        }
        //System.out.println(i);i未被定义,for循环中的i只属于循环体
        System.out.println("一共有" + sum + "个aaa");
    }
}
1.3.2while 循环

​ 当不明确循环次数,但是是否结束循环根据一个条件决定。

while循环格式:

条件初始化;
while(条件判断){
循环体语句;
条件变化;
}

注意: 在while循环中条件初始化不属于当前 while循环,注意变量作用域的问题,for循环的条件i属于当前循环,循环体语句只有一句,前后的{}可以省略。

/*
 * While循环练习
 */
public class WhilePrac {
    public static void main(String[] args) {
        //求1-100的和,求1-100的偶数和,求1-100的奇数和

        int i = 1;
        int sum= 0;
        while (i <= 100){//条件判断
            sum += i;//重复执行的语句体
            i++;//条件变化
        }
        System.out.println(sum);
1.3.3do…while

​ 使用do…while循环时,先执行在判断,且无论是都满足条件判断,都至少会执行一次。

do…while循环格式:

do{
循环体;
}while(条件判断);

​ 当{}中的语句只有一句,前后的{}可以省略。

public class DoWhileDemo04{
	public static void main(String[] args){
		//1.打印1~100之间的整数
		int i = 1;
		/*
		while(i<=100){
			System.out.println(i);
			i++;
		}
		*/
		do{
			System.out.println(i);
			i++;
		}while(i<=100);
		//变量i的作用域是当前main方法,不属于do..while循环
		System.out.println("不满足条件的i="+i); //101
		/*
		while(false){
			System.out.println("不满足while循环");
		}
		*/
		do
			System.out.println("不满足while循环");
		while(false);
	}
}

1.4break、continue、return

break:

作用 : 结束 终止
应用场景: switch 循环

continue:

作用 : 结束本次循环,直接进入到下一次循环
应用场景 : 循环中使用

return:

作用 : 结束本次循环,直接进入到下一次循环
应用场景 : 循环中使用

1.5带标签的break和continue

当存在循环嵌套的时候,我们在内层循环中使用break与continue,执行内存还是外层???
默认针对离break与continue关键字最近的内层循环
如果想要实现结束,调出针对的多层循环嵌套中的某一层,需要使用带标签的break或continue

带标签的break与continue:
1)需要某一层循环开始的位置设置标签 ->标签名:
2)在使用break或者continue,执行针对跳出|结束哪一个标签代表的循环–>break 标签名; | continue 标签名;

public class Demo09{
	public static void main(String[] args){
        //为外层循环添加标签
		one:for(int i=1;i<=5;i++){
            //内层循环添加标签
			two:for(int j=100;j<=110;j++){
				System.out.print(i+"--->"+j+" ");
				if(j==105){
                    //带有标签的break
					break one;
				}
			}
			System.out.println();
		}
	}
}

1.6不可达语句

在一定条件下,某些语句是永远也执行不到的:

  • return后的语句
  • while(false)中的代码
  • 死循环后的代码

​ for(;😉{}

​ while(true){}

  • break与continue后面的代码

2.方法

​ 方法是解决事情的办法,在java中代表功能,实现功能的代码段,也可以简化代码。需要注意的是:方法不能嵌套,且方法不调用不执行。

2.1有返回值类型:

//修饰符代表访问权限		返回值类型是方法执行完毕之后是否需要返回一个结果		方法名表示方法的名字,调用方法的时候需要根据方法名		(参数列表)可以定义参数,可以没有参数		return在一个有返回值类型的方法中,return关键字必须存在
修饰符	返回值类型	方法名(参数列表){
​			实现功能的代码段;
​			return返回值;
}

有返回值类型的方法调用:

  • 输出调用

  • 赋值调用

  • 直接调用

    public class MethodDemo03 {
    	public static void main(String[] args) {
    		//输出调用  1)执行方法中的代码  2)打印返回值
    		System.out.println(getPi());;
    		//赋值调用
    		double d = getPi();
    		System.out.println(d);;
    		System.out.println(getSum(3,5));;
    	}
    	//功能:定义一个功能: 返回pi的值
    	//返回值:需要  double
    	//参数: 不需要
    	//方法名: getPi()
    	public static double getPi(){
    		System.out.println("返回pi的值");
    		return 3.1415926;
    	}
    }
    

2.2没有返回值类型

修饰符	void	方法名(参数列表){

			实现功能的代码段;

}
public class MethodPrac {
    public static void main(String[] args) {
            print(20);//普通调用 方法名	(实参)
    }
    //print方法是打印m行乘法表
    public static void print(int m) {
        for(int i=1;i<=m;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j+"X"+i+"="+j*i+"\t");
                if (i==j){
                    System.out.println();
                }
            }
        }
    }
}
    

​ 无返回值类型的方法调用: 方法名 (实参);

2.3方法的兼容类型问题

方法兼容类型问题也称为类型转换问题:

1.参数类型
形参的类型>=实参的类型
2.返回值类型
接收返回值的变量的类型>=方法的返回值类型>=return后面数据的类型

注意:
以后的功能代码都定义在某个方法中,封装方法。

public class MethodDemo12{
	
	public static void main(String[] args){
		long b = 1;
		test((int)b); 

		int b2 = test(1);
		System.out.println(test2());
		
	}

	public static int test(int i){  
		return 'a'; //char可以转换成为int类型
	}
	
	public static char test2(){  
		return 97;  //char类型的表现形式之一: 可以使用0~65535之间的整数来表示一个字符
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值