day_03运算符、流程控制、循环

1.回顾

1.1自动类型转换

package day_03text;

public class Text1 {
	/**
	 * 回顾
	 */
	public static void main(String[] args) {
		//System.out.println(Long. MAX_VALUE);
		long L = 9223372036854775807L;
		System.out.println(L);
		//浮点型的32位是存储的科学计数法,而整数保存的是二进制
		//所以float的32位的最大值远远大于long的64位的最大值,所以long到float是自动类型转换
		//System.out.println(Float. MAX_VALUE);
		float f  = 3.4028235E38F;
		System.out.println(f);
	}

}

1.2小数相加

package day_03text;

public class Text2 {

	public static void main(String[] args) {
		double a = 0.1;
		double b = 0.2;
		//0.30000000000000004
		//内存中有些小数无法存储,需要注意,千万不能使用小数做判断
		System.out.println(a+b);

	}

}

1.3赋值运算

package day_03text;

public class Text2 {
	/**
	 * 赋值运算为右结合,并且*=和+=的优先级是一致的
	 * 从右到左开始计算,但是依然是从左到右初始化
	 */
	public static void main(String[] args) {
		int a1 =5;
		a1 *= a1 += a1 += a1;
		//5*=5+=5+=5;
		//75;a1 = 75
		System.out.println(a1);
		//*= += 等等都是赋值运算符,不同于算术运算符,不能放到后面参与运算,只能放到前面作为赋值
		a1 += 2 + ++a1;
		System.out.println(a1);
	}

}

2.运算符

2.1三目运算符

package day_03text;

public class Text3 {
	/**
	 * 三目运算符:又叫做三元运算符
	 * 语法:布尔型表达式 ? 真语句 : 假语句 ;
	 * 布尔型表达式:结果只要是布尔型即可(true/false)
	 */
	public static void main(String[] args) {
		int a =10;
		int b = 20;
		String result = a > b ?"a大于b" : "a小于b";
		System.out.println(result);

	}

}

2.2字符串连接符

package day_03text;

public class Text4 {
	/**
	 * 字符串拼接符:+
	 * +即是加和运算 也是字符串拼接符,用于把多个数据合并为一个字符串
	 * 任何数据 只要是和字符串进行 + 拼接,都可以得到新的字符串
	 */
	public static void main(String[] args) {
		int a = 12;
		int b =21;
		System.out.println(a+b);
		//需求 :打印a+b=30
		//a+b=1221
		System.out.println("a+b="+a+b);
		//a+b=30 如果把a+b写到字符串中,则不会被解析为变量,只是一个普通的字符串
		System.out.println("a+b="+(a+b));
		//需求:打印12+21=33
		//12+21=33
		System.out .println(a+"+"+b+"="+(a+b));
	}

}

3.流程控制

控制我们程序的执行流程和分支

    /**
	 * 流程控制有三种情况
	 * 1 顺序结构: 从上往下,从左到右执行,相当于马路只有一条路,没有任何分叉口
	 * 2 分支结构:相当于过马路有个分叉口,可以根据当前情况进行选择走那条路
	 * 3 循环结构:重复做某一件事,类似于在操场跑步
	 */

3.1顺序结构

严格从上往下从左到右执行即可

package day_03text;

public class Text5 {
	/**
	 * 流程控制有三种情况
	 * 1 顺序结构: 从上往下,从左到右执行,相当于马路只有一条路,没有任何分叉口
	 * 2 分支结构:相当于过马路有个分叉口,可以根据当前情况进行选择走那条路
	 * 3 循环结构:重复做某一件事,类似于在操场跑步
	 */
	public static void main(String[] args) {
		int a =10;
		int b =11;
		//第一个条件为false,第二个不执行了
		boolean c = (a>b && a>b++);
		//b++不执行 所以此时b=10
		System.out.println(b);
		//如果一个运算中,&&和||都有,那么&&优先级大于||
		boolean flag = true || false && false;
		System.out.println(flag);
	}

}

3.2分支结构

3.2.1 if...else...

package day_03text;

public class Text6 {
	/**
	 * 单分支语法 :  如果不符合条件,就不执行了
	 * 			if( 布尔型表达式 ){
	 * 				为真执行的java代码;
	 * 			}
	 * 
	 * 双分支语法 : 一定会有一个分支执行
	 * 			if(布尔型表达式){
	 * 				为真执行的java代码;
	 * 			}else{
	 * 				为假执行的java代码;
	 * 			}
	 * 
	 * 多分支语法 :  如果以else 就肯定会执行一个分支,否则就有不执行情况
	 * 			多分支  只会有一个分支执行,当某一个分支执行了,则整个多分支结构结束
	 * 		 	if(布尔型表达式){
	 * 				java代码;
	 * 			}else if(布尔型表达式){
	 * 				java代码;
	 * 			}else if(布尔型表达式){
	 * 				java代码;
	 * 			}.....
	 */
	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		// 这样写可能不执行
		if (a > b) {
			System.out.println("======");
		}
		
		// 肯定有一个执行
		if (a>b) {
			System.out.println(1111);
		}else{
			System.out.println(2222);
		}
		
		// 只会有一个执行
		if(a <b){
			System.out.println(333);
		}else if (a <b) {
			System.out.println(4444);
		}else if (a <b) {
			System.out.println(555);
		}
		System.out.println("-----------");

	}

}

3.2.2 switch

package day_03text;

public class Text7 {
	/**
	 * 语法 : 
	 * 		java1.7之前 只能传入 int类型 
	 * 		java1.7开始 还可以传入 String类型
	 * 			能传入int, 也就意味着 可以传入 byte,short,char
	 * 		只能判断相等!!!! 不能判断范围!!!!
	 * 		switch(数据){
	 * 			case 值 :
	 * 				符合条件的代码;
	 * 				break;
	 * 			case 值:
	 * 				符合条件的代码;
	 * 				break;
	 * 			default:
	 * 				默认执行的代码;
	 * 		}
	 * 	注意 : 每个case分支 一定要加 break , 否则会发生case穿透现象
	 * 			default 可以不加,如果不加 会有不执行的情况,就等于 if 没有加 else一样
	 */
	public static void main(String[] args) {
		char c = 'A';
		if (c == 'A') {
			System.out.println("优秀");
		} else if (c == 'B') {
			System.out.println("良好");
		} else if (c == 'C') {
			System.out.println("一般");
		} else {
			System.out.println("差");
		}
		
		switch (c) {
		case 'A':
			System.out.println("优秀");
			break;
		case 'B':
			System.out.println("良好");
			break;
		case 'C':
			System.out.println("一般");
			break;
		default:
			System.out.println("差");
		}
	}
}



3.2.3case穿透

		int i = 101;
		// case穿透 所以 要注意 break
		switch (i) {
		default:
			System.out.println(i);
		case 1:
			System.out.println(i+1);
		case 2:
			System.out.println(i+2);
		case 10:
			System.out.println(i+10);
			// 由于没有break 不会结束分支执行,所以找到符合条件的开始,后面所有的分支都会执行
		case 11:
			System.out.println(i+11);
		}

3.2.4case合并

package day_03text;

public class Text9 {

	public static void main(String[] args) {
		// case 合并 主要利用case穿透完成
		char c = 'A';
		// A,B,C 都是优秀
		switch (c) {
		case 'A':
		case 'B':
		case 'C':
		System.out.println("优秀");
		break;
		case 'd':
		System.out.println("一般");
		break;
		default:
		System.out.println("差");
		break;
		}
	}
}

例题

需求 : 给定人的年龄是 [1-100] 
 * 		编写程序,通过人的年龄,来判断当前这个人处于生命的哪个阶段
 * 			[1-5]  : 幼儿
 * 			[6-18] : 少年
 * 			[19-35] : 青年
 * 			[36-55] : 中年
 * 			[56-100] : 老年
package day_03text;
import java.util.Scanner;
public class Age {

	public static void main(String[] args) {
		Scanner sr = new Scanner(System.in);
		System.out.println("请输入您的年龄:");
		double age = sr.nextDouble();
		if( 1<=age && age <= 5){
			System.out.println("幼年");
		}else if( age <= 18 ){
			System.out.println("少年");
		}else if( age <= 35){
			System.out.println("青年");
		}else if( age <= 55){
			System.out.println("中年");
		}else if( age <=120){
			System.out.println("老年");
		}else 
			System.out.println("神仙");		
	}
}
需求 : 给定学生成绩,成绩可以带小数 [0-100] 编写程序 根据学生的成绩划分等级 [90-100] 优秀 [70-89] 良好 [60-69]
 * 及格 [0-59] 不及格
 * 
 * 使用switch完成 , 注意 switch不能传递double 只能传入 int和String
package day_03text;

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

	}

3.3循环结构

重复做某一件事

3.3.1for

3.3.1.1循环使用

package day_03text;

public class Text10 {
	/**
	 * 循环结构 : 重复做某一件事
	 * 循环三要素 : 初始值,终止条件,步长
	 * 语法 : 
	 * 			for( 表达式1 ;  表达式2 ; 表达式3 ){
	 * 				循环体,就是重复做的事;
	 * 			}	
	 * 		表达式1 : 最先执行,并且只执行一次,所以适合做初始化操作
	 * 		表达式2 : 必须是布尔型表达式,返回true/false
	 * 		表达式3 : 每次循环都会执行,所以适合做步长操作
	 * 执行过程 : 
	 * 		循环开始执行,先执行表达式1,并且只执行一次,然后执行表达式2,此时如果表达式2返回false,则循环终止
	 * 		如果表达式2返回true,则执行 循环体,  然后执行表达式3,再次执行表达式2,
	 * 		以此类推,一直到表达式2返回false,循环终止,否则就一直执行
	 */
	public static void main(String[] args) {
		// 死循环
		// for ( ; true ; ) {
		// System.out.println(1);
		// }
		// // 提醒remove 因为永远也执行不到
		// System.out.println(2222);

		System.out.println(1);
		System.out.println(2);
		System.out.println(3);
		System.out.println(4);
		System.out.println(5);
		System.out.println("====");
		// 0 ~ 9
		for (int i = 0; i < 10; i++) {
			System.out.println(i);
		}
		// i 只能在循环体中使用,外面用不到
		// System.out.println(i);
		// 所以 这里还可以是 i
		for (int i = 0; i < 5; i++) {
			
		}
		// 想要使用循环中的这个j 必须把作用域提升出去才行
		int j = 0 ;
		for (  ; j < 5; j++) {
			System.out.println("j="+j);
		}
		// 5
		System.out.println(j);
	}
}

3.3.1.2嵌套循环使用

package day_03text;

public class Text11 {
	/**
	 * 嵌套循环 : 循环体中还有一个循环
	 * 可以把双嵌套循环 模拟二维平面表
	 * 外层循环表示行数 , 内层循环代表 每行的列数
	 * 外层循环执行一次,内层循环执行一圈
	 */
	public static void main(String[] args) {
		// i=0 , j = 0 , j = 1, j=2 , j=3,j=4
		// i=1 ,  j = 0 , j = 1, j=2 , j=3,j=4
		// i=2 ,  j = 0 , j = 1, j=2 , j=3,j=4
		// i=3 ,  j = 0 , j = 1, j=2 , j=3,j=4
		// i=4 ,  j = 0 , j = 1, j=2 , j=3,j=4
		for (int i = 0; i < 5; i++) {
			
			for (int j = 0; j < 5; j++) {
				// 没有ln 就不会换行
				System.out.print(j+"   ");
			}
			// 换行
			System.out.println();
			// xxxx
		}
	}
}

3.3.1.3九九乘法表

package day_03text;

public class Text12 {

	public static void main(String[] args) {
		// for (int i = 1; i < 10; i++) {
		// for (int j = 1; j < 10; j++) {
		// System.out.print(j+"  ");
		// }
		// // 换行
		// System.out.println();
		// }
		for (int i = 1; i < 10; i++) {
			// i表示行, 所以小于等于 i 即可
			for (int j = 1; j <= i; j++) {
				System.out.print(j+"x"+i+"="+(j*i)+"  ");
			}
			// 换行
			System.out.println();
		}
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值