002 java运算符 & if语句

本文深入解析Java中的算术、赋值、自增自减、逻辑运算符的使用,探讨不同数据类型间的自动类型提升规则。同时,详细讲解if、if...else、if...elseif条件语句的应用场景与实现方法,帮助读者掌握Java基础运算和控制流程的核心概念。

1. 算术运算符

  • 运算符
  • 对常量和变量进行操作的符号
		System.out.println(10 + 20); 
		
		- int a = 1;
		- int b = 2;
		- System.out.println(a + b);
  • 表达式

      用运算符把常量或者变量连接起来符号,java语法的式子就可以称为表达式。
    

2. 字符的+操作

  • 思考: System.out.println(‘a’ + 1); // 输出结果? 98

  • 注意: 当char类型在跟整数类型的数据进行运算的时候, 实际上是?
    是查询该字符在底层所对应的码表数值, 然后再进行相加.
    查询码表数值的过程, 其实也是一个自动类型提升的过程.

    char 2个字节
    int	 4个字节
    
    1. char类型在和整数类型运算的时候, 会查找底层的ASCII数值, 然后再运算
    2. 小的数据类型在和大的数据类型相加的时候, 会先将小的数据类型提升为大的之后, 再进行运算.
  • 结论:

    不同的基本数据类型参与运算时,整个算术表达式的类型会自动进行提升,提升为参与运算的最高等级。

提升规则:
单独记忆 : byte类型,short类型和char类型将被提升到int类型

> 			 	整个表达式的类型自动提升到表达式中最高等级操作数相同的类型
> 			 	等级顺序:byte,short,char , int , long , float , double
  		float : 4个字节
  		long : 8个字节

  		注意: float虽然占4个字节, 但能够表示的范围, 比long要大

  					小数类型底层二进制的存储结构和整数类型是不一样的.

3. 赋值运算符

  • 扩展赋值运算符: += -= *= /= %=

     			+= : 将符号左右两边的数据做加法运算, 然后再将结果赋值给左边的变量
    
     					int a = 10;
     					a += 20;		// a = (int)(a + 20);
    
     					将a所记录的10和符号右边的20做加法运算, 计算出一个30的结果, 再赋值给左边的变量a
    
short s = 1;    
	s = s+1;			// 错误: 不兼容的类型: 从int转换到short可能会有损失精度

				

					short s=1;    			
					s = (short)(s+1);			
					// s是short类型, 在跟常量1做运算的时候, 会先提升为int再做运算
				   // 两个int相加的结果还是int, 将int赋值给一个short变量, 需要加入强制转换符.
					System.out.println(s);		
	
	short s=1;
    s += 1;			
					short s=1;
				    s += 1;	
				    // s = (short)(s + 1);
					// += 符号, 底层自动帮我们做了强制转换
					System.out.println(s);	

4.自增自减运算符

  • ++ – 运算符的基本应用是?
  • 单独使用有什么效果?
  • 参与运算使用有什么效果?

总结:
1. ++, --运算符就是完成变量自身+1, 或者自身-1的操作
2. 单独使用的时候, ++在前在后没有区别, 就是完成自身+1的操作
int a = 10;
a++;
++a;
4. ++运算符参与运算使用的时候 :
++在前 : 会先让变量自身+1, 然后再进行赋值
++在后 : 会先将变量原本的值取出来赋值, 然后自身再+1
int a = 10;
System.out.println(a++);
System.out.println();

	int x = 10;
	int y = x++;				// y = 10 , x = 11	
	int z = ++x;				// x = 12 , z = 12
	System.out.println(x);		// 12
	System.out.println(y);		// 10
	System.out.println(z);		// 12
	
	---------------
	
	int x = 4;
			// 4 + 6 + 60
	int y = (x++)+(++x)+(x*10);		
	System.out.println("x="+x);			
	System.out.println("y="+y);	

5.逻辑运算符

分类:

&(与)(并且) : 符号左右两边的布尔值同时为true的时候, 结果才是true遇false则false.

应用场景: 用于范围性的判断查找 |(或)(或者) : 符号左右两边有一个为true, 结果就是true !(非)(取反) : true变false, false变true

  • 扩展: 异或的特点
    一个数被另外一个数^两次, 该数本身不变.

     	实现两个变量的数据交换, 不能使用三方变量
    
     	int a = 10;
     	int b = 20;
     	
     	a = a ^ b;		// a = 10 ^ 20;
     	b = a ^ b;		// b = 10 ^ 20 ^ 20;		// b = 10
     	a = a ^ b;		// a = 10 ^ 20 ^ 10;		// a = 20
    
     	实现两个变量的数据交换
    
     	int a = 10;
     	int b = 20;
     	
     	// temp : 临时
     	
     	int temp = a;				// temp = 10
     	a = b;						// a = 20
     	b = temp;					// b = 10
     	
     	System.out.println(a);		// 20
     	System.out.println(b);		// 10
    

6.短路逻辑运算符

  • &和&&的区别是?

     &  :  普通的与, 无论符号左边是true还是false, 右边都要继续执行
    
     && :  短路与, 当符号左边为false的时候, 右边就不执行了.
     				但是, 如果左边为true, 右边还是要继续执行.
    
     		结论 : 短路与可以提升一点点的执行效率.
    
  • |和||的区别是?

     | :  	无论符号左边是true还是false, 右边都要继续执行
    
     || :    具有短路效果, 当符号左边为true的时候, 右边就不执行了.
    

7.分支结构 - if-if…else-if…else if

1:
	if(判断语句){
		语句体;
	}
2.
	if(比较表达式){
		语句体1;
	}else{
		语句体2;
	}
3.	
	if(比较表达式1) {
		语句体1;
	}else if(比较表达式2) {
		语句体2;
	}else if(比较表达式3) {
		语句体3;
	}
	...
	else {
		语句体n+1;
	}
import java.util.Scanner;

public class Test2_If {
	/*
		键盘录入考试成绩, 根据学生成绩输出学生等级

		90 - 100	优秀
		80 - 89		良好
		70 - 79		中等
		60 - 69		及格
		0  - 59		请加油努力
	*/
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的成绩:");
		int score = sc.nextInt();
		
		// 1. 判断键盘录入的成绩是否是合法值
		if(score >= 0 && score <= 100){
			
			// 2. 判断学生等级
			if(score >= 90 && score <= 100){
				System.out.println("优秀");
			}else if(score >= 80 && score <= 89){
				System.out.println("良好");
			}else if(score >= 70 && score <= 79){
				System.out.println("中等");
			}else if(score >= 60 && score <= 69){
				System.out.println("及格");
			}else if(score >= 0 && score <= 59){
				System.out.println("请加油努力");
			}
			
		}else{
			// 非法值
			System.out.println("您的成绩录入有误");
		}
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值