• JAVA——运算符


    运算符

    介绍:

    • 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
    1. 算术运算符
    2. 赋值运算符
    3. 关系运算符 [比较运算符]
    4. 逻辑运算符
    5. 位运算符 [需要二进制基础]
    6. 三元运算符

    1.算术运算符

    image-20211113223218596

    image-20211113224715972

    注意:

    1. *%的本质,可以看成一个公式 a % b = a - a/b b

    2. 当a%b是小数时,公式= a-(int)a/b*b

    3. 有小数参与运算时,得到的结果是一个近视值

      -10.5%3= -10.5-(-10)/3*3=-10.5+9=-1.5

    public class ArithmeticOperator{
    
    	public static void main(String[] args){
    		System.out.println(10.0/4);//2.0
    		double d =  10 / 4;//JAVA中 10/4 = 2,2->=2.0
    		System.out.println(d);
    
    		//在%的本质,可以看成一个公式 a % b = a - a/b *b
    		//-10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1
    		System.out.println(10 % 3); //1
    		System.out.println(-10 % 3); // -1
    		System.out.println(10 % -3); //1
    		System.out.println(-10 % -3); //-1
    	}
    }
    
    

    练习题:

    题目:

    定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度

    public class ArithmeticOperatorExercise03{
    
    	public static void main(String[] args){
    	
    		//1.需求:
    		//定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:
    		//5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度
    		//2.思路分析
    		//(1)有一个变量保存摄氏温度 double sheshi,一个变量保存华氏温度 double huashi
    		//	   要考虑java的特性
    		//(2)根据给出的公式 5/9*(华氏温度-100)
    		// (3) 将得到的结果保存到 double sheShi
    		
    		//3.走代码
    		double huaShi = 1234.6;
    		double sheShi = 5 / 9.0 * (huaShi - 100);
    		System.out.println("华氏温度:" + huaShi + "\n"+ "对应的摄氏温度:" + sheShi);
    	}
    }
    
    

    2.关系运算符(比较运算符)

    image-20211114165718378

    3.逻辑运算符

    介绍:用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean

    1. 短路与 && , 短路或 ||,取反 !
    2. 逻辑与 &,逻辑或 |,^ 逻辑异或

    image-20211114170144543

    说明逻辑运算规则:

    1. a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false

      public class LogicOperator{
      
      	public static void main(String[] args){
      		//&& 和 & 的案例
      		int age  = 50 ;
      		//短路与
      		if(age > 20 && age < 90){
      			System.out.println("ok100");
      		}
      		
      		//逻辑与&使用
      		if(age > 20 & age < 90){
      			System.out.println("ok200");
      		}
      
      		//区别
      		int a = 4;
      		int b = 9;
      		//对于&&短路与而言,第一个条件为false,第二个条件不判断
      		//对于&而言,第一个条件为false,第二个条件会判断
      		if(a < 10 && ++b < 50){
      			System.out.println("ok300");//输出,
      		}
      		System.out.println("a=" + a +" " + "b=" + b);// 4 10
      
      		if(a < 1 & ++b < 50){
      			System.out.println("ok400");
      		}
      		System.out.println("a=" + a +" " + "b=" + b);//4 11
      	}
      }
      
    2. a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false

    3. a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false 、

    4. a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false

    5. !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true

    6. a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 fal

    注意:

    • 在开发中,基本用短路与 &&,效率高

    3.1&& 和 & 使用区别

    1. &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
    2. & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低

    3.2|| 和 | 使用区别

    1. ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
    2. | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
    3. 开发中,我们基本使用 ||

    3.3 取反 基本规则

    ! 非(取反) !条件 如果条件本身成立,结果为 false,否则为 true

    public class InverseOperator {
    	//编写一个 main 方法
    	public static void main(String[] args) {
    		//! 操作是取反 T->F , F -> T
    		System.out.println(60 > 20); //T
    		System.out.println(!(60 > 20)); //F
    		//a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
    		boolean b = (10 > 1) ^ ( 3 > 5);
    		System.out.println("b=" + b);//T
    	}
    }
    

    3.4逻辑异或

    a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为


    4.赋值运算符

    介绍:赋值运算符就是将某个运算后的值,赋给指定的变量

    4.1赋值运算符的分类

    1. 基本赋值运算符
    2. 复合赋值运算符
      • += ,-= ,*= , /= ,%= 等

    4.2赋值运算符的特点

    1. 复合运算会进行强制类型的转换
      • b++也有一个类型的转换
    2. 运算顺序从右往左
    3. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值 int num = 20; int num2= 78 * 34 - 10; int num3 = a

    5.三元运算符

    基本语法:

    • 条件表达式 ? 表达式 1: 表达式 2;

    运算规则:

    1. 如果条件表达式为 true,运算后的结果是表达式 1;
    2. 如果条件表达式为 false,运算后的结果是表达式 2;
    public class AssignOperator{
    	public static void main (String []args){
    		// byte b = 3;
    		// b += 2; // b = (byte)b + 2;
    		// System.out.println(b);
    
    		int a = 10;
    		int b = 99;
    		int result = a < b ? a++:b--;//10,注意这里是后减减和后加加
    		System.out.println("result="+result);//10
    		System.out.println("a=" + a);//11
    		System.out.println("b=" + b);//99
    
    	}
    }
    

    5.1使用细节

    1. 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
    2. 三元运算符可以转成 if--else 语句

    6.运算优先级

    1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
    2. 只有单目运算符(针对一个数进行操作的)、赋值运算符是从右向左运算的。
    3. 一览表, 不要背,使用多了,就熟悉了

    image-20211115202931171

    优先级:

    1. (),{}等
    2. 单目运算 ++ --
    3. 算术运算符
    4. 位移运算符
    5. 比较运算符
    6. 逻辑运算符
    7. 三元运算符
    8. 赋值运算符
  • 相关阅读:
    Ansi,UTF8,Unicode,ASCII编码的区别
    Delphi 快捷键
    Sql Server2008恢复备份数据库问题
    js图片无缝滚动代码
    SQL Server 2008 清空删除日志文件 130G日志 10秒内变10M .
    JavaScript_循环26个英文字母的方法 .
    iframe跨子域
    sql数据库该名字
    大型网站架构的优化与架构演变(整理) .转自网络
    删除SQL日志语句,经测试8G日志文件都可以删除
  • 原文地址:https://www.cnblogs.com/DL50/p/15798740.html
Copyright © 2020-2023  润新知