Java从入门到放弃04---for/while/do while循环结构/控制跳转语句/方法

Java从入门到放弃04—for/while/do while循环结构/控制跳转语句/方法

01 循环结构

  • 循环结构:在满足循环条件的情况下,反复执行一段代码。注意:在合适的时候需要把循环判断条件修改为false,结束循环。否则会形成死循环。
  • 分类:for循环/while循环/do while循环

02 for循环结构

  • for循环结构的判断语句结果为boolean类型。
  • for循环结构的格式(示例:求数字1–100的和)
class ForPractice01{
    public static void main(String[] args){
    	int sum=0;
        for(int i=1;i<=100;i++){//(表达式)中先要初始化表达式语句;给出判断条件语句;再给出控制条件语句
            sum+=i;//如果判断条件语句的返回值是true则执行循环体语句,如果是false,结束循环。
        }
        System.out.println("1--100的和为:"+sum);
    }
}

  • for循环结构的死循环格式:
for(;;){
    ...//循环体语句
}

  • 练习a.在控制台输出所有的水仙花数,,并统计水仙花数的个数。(水仙花数是指一个三位数,其各位数字的立方和等于该数本身)。
class ForPractice02{
    public static void main(String[] args){
    	int count=0;//用来统计水仙花个数的变量
        for(int i=100;i<=999;i++){
            int a=i/100;//i个百位
            int b=i/10%10;//i的十位
            int c=i%10;//i的个位
            if(i==a*a*a+b*b*b+c*c*c){
                System.out.print(i+"\t");//在一行打印输出的水仙花数,'\t'表示空出一个tab的距离,注意该语句和System.out.println()的区别
                count++;//每输出一个水仙花数,count+1
            }
        }
        	System.out.println("一共有"+count+"个水仙花数");
    }
}
运行结果:153 370 371 407 一共有4个水仙花数

  • 练习b.需求:请用’*'输出一个5行5列的直角三角形。
  • 循环嵌套的重要结论(外循环控制行数,内循环控制列数)
class ForPractice03{
    public static void main(String[] args){
        for(int i=1;i<=5;i++){
            for(int j=1;j<=i;j++){//每行打印的星星递增
                System.out.print("*");
            }
            System.out.println("\t");//每行输出相应个数的*之后,执行换行。
        }
    }
}
运行结果:*
	    **
		***
		****
		*****

  • 练习c.需求:请在控制台输出九九乘法表
class ForPractice04{
    public static void main(String[] args){
        int multi=0;//定义变量积
        for(int i=1;i<=9;i++){//外循环结构控制行数
            for(int j=1;j<=i;j++){//内循环结构控制列数
                multi=i*j;
                System.out.print(j+"*"+i+"="+multi+"\t");
            }
            System.out.println("\t");
        }
    }
}

03 while循环结构

  • while循环结构语法(示例:求数字1–100的和)
class WhilePractice01{
	public static void main(String[] args){
     int i=1;//初始化条件语句
    int sum=0;
    while(i<=100){//判断条件语句
        sum+=i;//循环体语句;判断条件语句返回值为true,则执行循环体语句。
        i++;//控制条件语句
    }
    System.out.println("1--100的和为:"+sum);   
	}
}
运行结果:1--100的和为:5050

  • while循环结构的死循环格式:
while(true){
    ...//循环体语句
}
  • 执行流程:执行初始化条件语句;>>执行判断条件语句;>>返回值为true>>执行循环体语句>>执行控制条件语句>>直到返回值为false,结束循环。

04 do while循环结构

  • do while循环结构语法(示例:求数字1–100的和)
class DoWhilePractice01{
    public static void main(String[] args){
        int sum=0;
        int i=1;//初始化条件语句
        do{
            sum+=i;//执行循环体语句
            i++;//控制条件语句
        }while(i<=100);//判断条件语句,返回值为true,继续循环;返回值为false,结束循环
        System.out.println("1--100的和为:"+sum);
    }
}
  • 执行流程:执行初始化条件语句;>>执行循环体语句;>>执行控制条件语句>>执行判断条件语句>>直到判断条件语句返回值为false,结束循环。

04 for/while/do while的区别

  • 区别1:do while循环结构先执行循环体语句,因此在整个循环过程中,至少执行一次循环体。而for/while必须先执行判断条件语句,才能决定是否执行循环体语句。
  • 区别2:如果想在循环结束后,继续使用控制条件的那个变量(如i),则选择while循环,否则用for循环。
  • 实际开发中,为了让变量更早的释放内存,提高内存的使用效率,应当优先考虑使用for循环结构,其次是while循环结构,最后是do while循环结构。

05 控制跳转语句

  • Java中使用break/continue/return来实现控制语句的跳转和中断。

a.break

  • 功能:1.退出单层循环 2.退出多层循环 (很少使用)
  • 应用场景:在选择结构switch语句中/在循环语句中。
  • 注:离开使用场景的存在是没有意义的。
class BreakPractice01{
    public static void main(String[] args){
    	int count=0;//定义一个变量,用来统计控制台一共输出了几次
        for(int i=1;i<=10;i++){
            if(i%3==0){//当i=3时,执行break;跳出for循环
            	break;
            }
            System.out.println("控制台输出了"+i);//当i%3!=0时,执行该语句。当i=3时,跳出循环。
            count++;
        }
        System.out.println("控制台总共输出了"+count+"次");
    }
}
运行结果:控制台输出了1
	    控制台输出了2
	    控制台总共输出了2次

b.continue

  • 功能:跳出一次循环,执行下一步操作。
  • 应用场景:在循环语句中
  • 注:离开使用场景的存在是没有意义的。
class ContinuePractice01{
    public static void main(String[] args){
    	int count=0;//定义一个变量,用来统计控制台一共输出了几次
        for(int i=1;i<=10;i++){
            if(i%3==0){
                continue;//当i%3=0时,只跳出一次循环
            }
            System.out.println("控制台输出了"+i);
            count++;
        }
        System.out.println("控制台总共输出了"+count+"次");
    }
}
运行结果:控制台输出了1
		控制台输出了2
		控制台输出了4
		控制台输出了5
		控制台输出了7
		控制台输出了8
		控制台输出了10
		控制台总共输出了7次		

c.return

  • 功能:退出一个方法。(在方法的使用里有详细笔记)

06 方法

  • 功能:对一段功能的逻辑封装,用以实现重复调用。

  • 定义:方法就是完成特定功能的代码块。定义在类中,方法和方法之间属平级关系,不能相互嵌套。

  • 注意事项

    方法不调用不执行
    方法与方法是平级关系,不能嵌套定义
    方法定义的时候参数之间用逗号隔开
    方法调用的时候不用再传递数据类型
    如果方法有明确的返回值,一定要由return带回一个值
    

  • 语法:

    权限修饰符 状态修饰符 返回值类型 方法名(参数类型1 参数名1,参数类型2 参数名2){
    						方法体;//完成功能的代码
    						return 返回值;//结束方法以及返回方法指定类型的值
    			} 
    

  • 方法的格式详细说明

    修饰符 		 比较多,后面会详细介绍。目前使用  public static
    返回值类型 	    用于限定返回值的数据类型//eg.void:无明确返回值类型 int:明确返回值类型为int 
    方法名			 就是一个名称,它的存在是为了方便我们调用方法
    参数类型 	    限定调用方法时传入参数的数据类型
    参数名 		 是一个变量,接收调用方法时传入的实际参数参数
    方法体 		 完成功能的代码
    return 		   结束方法以及返回方法指定类型的值 
    返回值 		 就是功能的结果,由return带回,带回给调用者
    //一个方法一旦明确返回值类型,必须调用return关键字返回与明确类型一致的结果。
    

  • 方法的调用:方法必须调用才会执行。调用方法有三种:1.单独调用(多用于没有返回值的图形输出) 2.赋值调用(多用于有返回值的方法调用) 3.输出调用

    以MethodPractice01程序说明调用方法的语法:

    import java.util.Scanner;//导入Scanner包
    class MethodPractice01{
        public static void main(String[] args){
        	System.out.println("-----------执行主方法---------------");//main表示主方法,主方法是一个程序入口,由JVM实现调用。一个类中只能有一个主方法。
            show();//单独调用了无返回值的show()方法
            Scanner sc=new Scanner(System.in);//new一个新的对象
    		System.out.println("请输入第一个数字");
    		int a=sc.nextInt();//录入数据
    		System.out.println("请输入第二个数字");
    		int b=sc.nextInt();//录入数据
    		int sum=add(a,b);//(赋值调用)在调用方法时,传入的参数,叫做实际参数,实参可以是常量也可以是变量
    /*调用了有返回值的add()方法,注意:当我们去调用一个有参数的方法时,必须传入与之相对应的参数(参数个数要对应,数据类型要对应)*/
    		System.out.println("两个数字之和为:"+sum);//输出调用
    		show();//单独调用了无返回值的show()方法
    	}
        public static void show(){
            System.out.println("-----------调用了show()------------");
        }
        public static int add(int a,int b){
    /*定义括号里面的参数被称为形式参数,多个形式参数需要用逗号隔开。形式参数的作用是调用方法时,接收传过来的实际参数。*/
            int sum=a+b;
    		System.out.println("-----------调用了add()------------");
            return sum;
        }
    }
    运行结果:-----------执行主方法---------------
    		-----------调用了show()------------
    		请输入第一个数字
    		1
    		请输入第二个数字
    		2
    		-----------调用了add()------------
    		两个数字之和为:3
    		-----------调用了show()------------
    

  • 方法重载

    在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关。
    调用的时候,会根据参数个数和参数类型去匹配
    

    以求和问题为例,分别输入不同参数个数,或不同参数类型做对比解释方法重载

    class MethodPractice02{
        public static void main(String[] args){
            add(1,2);//输入的参数为两个,参数类型都为int
            add(1,2.0);//输入的参数为两个,参数类型分别为int和double
            add(1,2,3);//输入的参数为三个,参数类型都为int
        }
        public static int add(int a,int b){
            int sum=0;
            sum=a+b;
            System.out.println("调用了两个int类型的add方法");
            System.out.println("和为"+sum);
            return sum;
        }
        public static double add(int a,double b){
            int sum=0;
            sum=a+b;
            System.out.println("调用了一个int类型和一个double类型的add方法");
            System.out.println("和为"+sum);
            return sum;
        }
        public static int add(int a,int b,int c){
            int sum=0;
            sum=a+b+c;
            System.out.println("调用了三个int类型的add方法");
            System.out.println("和为"+sum);
            return sum;
        }
    }
    运行结果:调用了两个int类型的add方法
    		和为3
    		调用了一个int类型和一个double类型的add方法
    		和为3.0
    		调用了三个int类型的add方法
    		和为6
    

猜你喜欢

转载自blog.csdn.net/yinyanyao1747/article/details/89003534
0条评论
添加一条新回复