2021-03-24

Day03 流程控制、循环、方法

  1. 流程控制
    1.1 顺序结构
    正常编码,从上往下,从左到右执行即可

1.2 分支结构
根据业务逻辑,某些代码在某种情况下执行
或者是根据不同的情况执行不同的代码
技术栈 : if…else … switch

1.2.1 If
1.2.1.1 单分支
package _04_If;

/**

  • 单分支 :

  •  有不执行情况,比如boolean表达式为false
    
  •  if( boolean表达式 ){
    
  •  	java代码;
    
  •  } 
    
  • @Date 2021年3月23日
    */
    public class IF_01 {

    public static void main(String[] args) {
    // 又不执行情况
    if(1>2){
    System.out.println(“原来1小于2”);
    }
    }
    }

1.2.1.2 双分支
package _04_If;

/**

  • 双分支,有且只有一个分支执行

  •  if( boolean表达式 ){
    
  •  	为真的代码;
    
  •  }else{
    
  •  	为假的代码;
    
  •  }
    
  • @Date 2021年3月23日
    */
    public class IF_02 {

    public static void main(String[] args) {
    if (1<2) {
    System.out.println(“原来1小于2”);
    }else{
    System.out.println(“原来1大于2”);
    }
    }
    }

1.2.1.3 多分支
多分支 : 只会有一条分支执行,有一条执行之后,整个分支结束
*

  • 1 有不执行情况

  •  	if( boolean表达式 ){
    
  •  		真语句;
    
  •  	}else if( boolean表达式 ){
    
  •  		真语句;
    
  •  	}else if(......){
    
  •  	}
    
  • 2 没有不执行情况

  •  	if( boolean表达式 ){
    
  •  		真语句;
    
  •  	}else if( boolean表达式 ){
    
  •  		真语句;
    
  •  	}else if(......){
    
  •  	}else{
    

    }

1.2.1.4 特殊情况
package _04_If;

public class IF_04 {

public static void main(String[] args) {
	
	// 若 分支只有一条语句,则{} 可以省略
	if (true)
		System.out.println("1111");
	
	if(true)
		System.out.println(222);
	else
		System.out.println("111111");
	
	if(true)
		System.out.println(222);
	else if(false)
		System.out.println("111111");
	else if(false)
		System.out.println("=========");
}

}

1.2.2 Switch
package _05_Switch;

/**

  • javaSE1.7之前 只可以操作 整型 1.7开始 (包括1.7) 可以操作字符串

  • switch( 整型/字符串 ){

  •  case 值 : 
    
  •  		代码;
    
  •  	break;
    
  •  case 值 : 
    
  •  		代码;
    
  •  	break;
    
  •  case 值 : 
    
  •  		代码;
    
  •  	break;
    
  •  default : 
    
  •  		代码;
    
  • }

  • @Date 2021年3月24日
    */
    public class Switch_01 {
    public static void main(String[] args) {
    char c = ‘B’;
    switch © {
    // default 也可以写到最上面,但是还是会先执行case 再执行 default
    default:
    System.out.println(“差”);
    break;
    case ‘A’:
    System.out.println(“优秀”);
    break;
    case ‘B’:
    System.out.println(“良好”);
    break;
    case ‘C’:
    System.out.println(“及格”);
    break;
    }

     switch (c) {
     // case合并,相当于 ||  ,  c=='A' || c=='B'
     case 'A': case 'B':
     	System.out.println("优秀");
     	break;
     case 'C':
     	System.out.println("及格");
     	break;
     default:
     	System.out.println("差");
     	break;
     }
    

    }
    }

1.2.2.1 语法
package _05_Switch;

/**

  • 每个分支都必须以 break结尾,否则会出现case穿透情况

  • 找到符合条件的判断之后,就不再判断,直接执行后面的程序

  • @Date 2021年3月24日
    */
    public class Switch_02 {
    public static void main(String[] args) {
    char c = ‘S’;
    switch © {
    // 如果没有break 也没有符合的条件,并且default也在最上面,则 穿透所有
    default:
    System.out.println(“差”);
    case ‘A’:
    System.out.println(“优秀”);
    case ‘B’:
    System.out.println(“良好”);
    case ‘C’:
    System.out.println(“及格”);

     }
    

    }
    }

1.2.2.2 案例

package _05_Switch;

/**

  • 需求 :

  •  1 系统给定学生成绩(可以带小数) [0-100] ,注意 switch 不能传递小数,不能使用范围 > < <= 
    
  •  2 编写程序,根据学生的成绩判断学生的成绩等级
    
  •  	[90-100] 优秀
    
  •  	[70-90) 良好
    
  •  	[60-70) 及格
    
  •  	[0-60) 不及格
    
  • 只允许使用switch

  • @Date 2021年3月24日
    */
    public class Switch_03 {

    public static void main(String[] args) {
    double score = 98.2;
    int grade = (int) (score / 10);
    switch (grade) {
    case 9:
    case 10:
    System.out.println(“优秀”);
    break;
    case 7:
    case 8:
    System.out.println(“良好”);
    break;
    case 6:
    System.out.println(“及格”);
    break;
    default:
    System.out.println(“不及格”);
    break;
    }
    }
    }

1.3 循环结构
重复执行某些代码

1.3.1 循环三要素
起始值,终止条件,步长

1.3.2 For
1.3.2.1 语法

For循环又称计数循环

1.3.2.2 案例
package _06_For;

/**

  • 循环三要素 : 初始值,终止条件,步长

  • for循环又称计数循环,在某个次数范围内,重复做某件事

  • 语法 :

  •  for( 表达式1 ; 表达式2 ; 表达式3 ){
    
  •  	重复执行的代码;
    
  •  }
    
  •  执行过程 : 
    
  •  	先执行表达式1 ,并且只执行一次
    
  •  	执行表达式2 , 根据结果进行处理,如果是true,就执行循环体,如果是false就终止
    
  •  	执行完循环体之后,执行表达式3 , 然后执行表达式2 ,同上... 
    
  •  	重复执行 表达式3 , 表达式2 循环体,一直到 表达式2 为false 终止
    
  • @Date 2021年3月24日
    */
    public class For_01 {
    public static void main(String[] args) {
    // 条件可以不写,分号必须有,死循环,没什么价值
    // for( ; ; ){
    // System.out.println(1);
    // }

     for (int i = 0; i < 10; i++) {
     	// 0 ~ 9
     	System.out.println(i);
     }
     // 无法访问循环中的变量
     // System.out.println(i);
     
     int k ;
     for ( k= 0 ; k < 10; k++) {
     	System.out.println("k="+k);
     }
     System.out.println(k);
     for (int i = 10; i >0; i--) {
     	System.out.println(i);
     }
    

    }
    }

1.3.2.3 嵌套循环

package _06_For;

/**

  • 嵌套循环 : 循环体中 还有一个循环

  • 双重嵌套,可以模拟二维表格

  • 可以把外层循环当做行,内层循环当做列

  • @Date 2021年3月24日
    */
    public class For_02 {

    public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {

     	for (int j = 0; j < 5; j++) {
     		// 去掉ln 就不会换行了
     		System.out.print(j + "  ");
     	}
     	// 换行
     	// System.out.println();
     	System.out.print('\n');
     }
    

    }
    }

1.3.2.4 九九乘法表

package _06_For;

/**

  • 九九乘法表

  • 1x1 = 1

  • 1x2 = 2 2x2 =4

  • 1x3 = 3 2x3 = 6 3x3 =9

  • @Date 2021年3月24日
    */
    public class For_03 {

    public static void main(String[] args) {
    // for (int i = 1; i < 10; i++) {
    // for (int j = 1; j < 10; j++) {
    // System.out.print(0+" ");
    // }
    // System.out.println();
    // }

     for (int i = 1; i < 10; i++) {
     	for (int j = 1; j <= i; j++) {
     		System.out.print(j+"x"+i+"="+(i*j)+" ");
     	}
     	System.out.println();
     }
    

    }
    }

1.3.3 While
1.3.3.1 语法

1.3.3.2 案例
package _07_While;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**

  • while循环 又称为真假循环,是某个条件为真的时候执行

  • 语法 : while( boolean表达式 ){ java代码; }

  • @Date 2021年3月24日
    */
    public class While_01 {

    public static void main(String[] args) {
    // 这种场景 适合用for
    int i = 0;
    while (i < 10) {
    System.out.println(i);
    i++;
    }

     List list = new ArrayList();
     list.add(1);
     list.add(2);
     list.add(3);
     Iterator iterator = list.iterator();
    
     // for (; iterator.hasNext();) {
     // System.out.println(iterator.next());
     // }
     
     // 这种场景适合用while
     while (iterator.hasNext()) {
     	System.out.println(iterator.next());
     }
    

    }
    }

1.3.4 DoWhile
1.3.4.1 语法

1.3.4.2 案例
package _07_While;

/**

  • do…while : 能够保证代码,至少执行一次,先执行一次,在判断要不要继续执行
  • 语法 :
  •  do{
    
  •  	java代码;
    
  •  }while( boolean表达式 );
    
  • @Date 2021年3月24日
    */
    public class DoWhile {
    public static void main(String[] args) {
    // 保证先执行一次
    int i =120;
    do {
    System.out.println(i);
    i++;
    } while ( i < 10 );
    }
    }

1.3.5 Break
package _08_break;
/**

  • break 语句 :

  •  1 用于switch 结束分支,放置case穿透
    
  •  2 用于循环中,结束循环(如果是嵌套循环的话,结束距离最近的)
    
  • @Date 2021年3月24日
    */
    public class Break_01 {

    public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
    // 应用场景 : 比如在一堆数据中找某一个数据,找到之后,循环就可以停止了,不用再比较了
    if (i == 5) {
    break;
    }
    System.out.println(i);
    }
    }
    }

1.3.6 BreakOutfor
package _08_break;

public class Break_02 {

public static void main(String[] args) {
	// for (int i = 0; i <5; i++) {
	// for (int j = 0; j < 5; j++) {
	// // 默认终止内层循环
	// if (i == 3) {
	// break;
	// }
	// System.out.print(j+ " ");
	// }
	// System.out.println();
	// }

	// 对外层循环设置个名字
	outerFor: for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			if (j == 3) {
				// 终止名字对应的循环,可以终止外层循环
				break outerFor;
			}
			System.out.print(j + " ");
		}
		System.out.println();
	}
}

}

1.3.7 Continue
package _08_break;

/**

  • continue 跳过当前次循环,继续下一次(碰到continue 直接执行 ++ 操作)

  • @Date 2021年3月24日
    */
    public class Countinue_01 {

    public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
    if (i == 3) {
    // 跳过当前次循环
    continue;
    }
    // 0124
    System.out.println(i);
    }
    }
    }

1.4 流程控制总结
条件判断语句:if语句、switch语句。
循环执行语句:do while语句、while语句、for语句。
跳转语句:break语句、continue语句、return语句。
如图:
控制语句类型 关键字 作用
选择结构语句 if、if else、else if
switch 通过开关机制,选择要执行的代码
循环结构语句 for、while、do while 通过循序机制,反复执行相同的代码段
改变语句执行序 break、continue 通过打断或继续机制,改变当前工码的执行顺序

三种循环结构的异同点:
用while和do…while循环时,循环变量在循环体之前初始化,而for循环一般在语句1进行初始化。
while 循环和for循环都是先判断表达式,后执行循环体;而do…while循环是先执行循环体后判断表达式。也就是说do…while的循环体最少被执行一次,而while循环和for就可能一次都不执行。
这三种循环都可以用break语句跳出循环,用continue语句结束本次循环。

  1. 方法
    2.1 概述
    什么是方法 : 一堆代码的集合,当使用这个方法,就等于使用这些代码
  • 优点 :
  •  	1 使程序更加简洁更加清晰
    
  •  	2 有利于程序维护
    
  •  	3 提高开发效率
    
  •  	4 提高代码的重用性
    
  • 方法目的 : 代码重用,如果代码中出现很多重复代码,说明你的程序有问题
  • 函数 : 在类之外,和类平级,使用该函数不需要任何二次引用,可以直接使用
  • 方法 : 在类中,使用该方法的时候需要加前缀找到它
  • 方法和函数其实是一个东西,只不过根据放置位置不同,叫法不同,调用方式不同
  • c中只有函数, c++ 函数和方法都有,类外叫函数,类中叫方法, java中 只有方法

2.2 方法声明
方法声明 :

  •  [修饰符列表]  返回值类型  方法名  (参数列表) { 方法体 }
    
  •  	[] : 表示可以有,也可以没有,也可以有多个
    
  •  	修饰符 : 可选的 
    
  •  			权限控制 : public , private , protected  , 默认  四选一
    
  •  			其他 : static  , final , abstract , synchronized  (final , abstract  二选一)
    
  •  	返回值类型 : 完成功能后,是否需要返回结果,如果不需要 就写void 
    
  •  			如果需要返回结果,就写 结果数据 对应的类型即可  比如 返回一个9 ,返回值类型这里 就写 int/byte/short/long
    
  •  				可选 : 11种数据类型中任意一种 或 void 12选1 
    
  •  	方法名 : 名字嘛,符合命名规则即可(大小写字母,美元符号,下划线,数字.且数字不能打头.不能使用关键字和保留字)
    
  •  			方法名 / 变量名 首字母建议小写, 类名 建议首字母大写
    
  •  	参数列表 : 调用方法时,需要传递的数据
    
  •  			可以有,可以有多个.可以没有,如果没有,() 只写小括号即可 , 多个用逗号隔开
    
  •  		形参 : 方法声明时,规定应该传入的数据的类型 
    
  •  		实参 : 调用方法时,实际传递的具体的值
    
  •  	方法体 : java编码,要做的事
    

2.3 方法分类和调用
方法分类 :

  •  静态方法 : 使用static修饰的方法是静态方法,类级别的 
    
  •  成员方法 : 没有static修饰
    
  •  构造方法 : 用于创建对象
    
  • 方法调用 :
  •  静态方法 : 类名.静态方法名(参数);  类名.静态方法名();
    
  •  成员方法 : 对象.成员方法名(参数)
    
  •  构造方法 : new
    
  • 方法不调用 不执行,调用才执行,并把结果 返回到调用处
  •  意味着 编写方法的时候,不需要考虑先后顺序,只需要考虑调用顺序即可,先调用先执行
    

2.4 入口方法main
特殊方法main : 入口程序,由JVM调用,固定写法,不能更改, 参数列表中的变量名 args 可以改

  •  	java程序,可以理解为,只会执行main方法,所有代码的开始和结束,必须依赖于main方法中
    

2.5 Return
2.5.1 概述
2.5.2 无返回值
2.5.3 有返回值
eturn : 1 终止方法运行 , 2 返回数据

  •  1 如果方法没有返回值(void) , 那么方法体中,可以 没有return,如果写return, 
    
  •  	return后不能写任何数据,此时return只有终止方法运行的作用
    
  •  2 如果方法有返回值(非void), 那么方法体中,必须有return,而且return后要写上返回值类型对应的数据
    
  •  	比如 返回值 int , 则 方法体中 " return int类型的值 ";
    
  •  3 因为return有终止方法运行的作用,所以 return之后不能写任何代码
    

2.6 案例
package _09_Method;

public class Method_02 {

public static void main(String[] args) {
	System.out.println("----");
	// 调用m1,先调用,先执行,和方法声明位置无关
	// 但在方法内部,依然是从上往下,从左到右执行
	Method_02.m1(2, 3);
	// 当前类中的静态方法,类名可以省略
	m2(2, 3);
	System.out.println("=====");
}

public static void m2(int a, int b) {
	System.out.println(a * b);
}

public static void m1(int a, int b) {
	System.out.println(a + b);
}

}

2.7 方法重载
package _09_Method;

/**

  • 唯一性 : 表示唯一确定一个方法

  •   1 方法名 , 2 参数列表
    
  • 方法重载 : 方法名相同,参数列表不同

  •  		参数列表不同 : 1 个数不同, 2 类型不同
    
  • 一下程序 功能类似,方法名不同,导致用户需要记住很多方法名

  • 不方便记忆,不美观

  • @Date 2021年3月24日
    */
    public class Method_04 {

    public static void main(String[] args) {
    System.out.println(sumInt(1, 2));
    System.out.println(sumLong(1, 4L));
    System.out.println(sumDouble(2, 2.4));

     // 重载调用
     System.out.println(sum(1, 1));
     System.out.println(sum(1, 2L));
     System.out.println(sum(1, 2.3));
    

    }
    public static int sumInt(int a ,int b){
    return a+b;
    }
    public static long sumLong(long a ,long b){
    return a+b;
    }
    public static double sumDouble(double a ,double b){
    return a+b;
    }
    // 重载之后 , 名字一致
    public static int sum(int a , int b){
    return a+b;
    }
    public static long sum(long a , long b){
    return a+b;
    }
    public static double sum(double a , double b){
    return a+b;
    }

    public static void m1(double q){

    }
    int m1(int i){
    return 1;
    }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值