zoukankan      html  css  js  c++  java
  • 运算符

    一、算术运算符

    • +表示加法运算符

    • -表示减法运算符

    • *表示乘法运算符

    • /除法运算符

    • %表示取模/区域运算法

      int a = 12;
      		int b = 5;
      		//double c;
      		//进行加法运算
      		int c1 = a + b;//  a + b 这个整体叫做表达式;a,b叫做操作数,+叫做操作符/运算符
      		System.out.println("c1 = " + c1);
      		//进行减法运算
      		int c2 = a - b;
      		System.out.println("c2 = " + c2);
      		//进行乘法运算
      		int c3 = a * b;
      		System.out.println("c3 = " + c3);
      		//进行除法运算
      		double c4 = a / b;
      		System.out.println("c4 = " + c4);
      		int c6 = a / b;//当两个整数相除时结果只会保留整数部分,小数部分丢弃
      		System.out.println("c6 = " + c6);
      		System.out.println(5*1.0/2);
      		//进行取余运算
      		int c5 = a % b;
      		System.out.println("c5 = " + c5);
      

    注意事项:

    • 当两个整数相除时没结果保留整数部分,丢弃小数部分

    • 若希望保留小数部分:

      • 使用强制类型转换,将其中一个类型转换成double类型在运算即可。

      • 让其中一个操作数乘以1.0即可

        //进行除法运算
        		double c4 = a / b;
        		System.out.println("c4 = " + c4);
        		int c6 = a / b;//当两个整数相除时结果只会保留整数部分,小数部分丢弃
        		System.out.println("c6 = " + c6);
        		System.out.println(5*1.0/2)
        
    • 0不能作除数

    //0 不能作除数
    		System.out.println(5 / 0.0);//Infinity 无穷
    		System.out.println(0 / 0.0);//NaN:Not a number.
    		System.out.println(5 / 0);//编译没问题,但在运行时:Exception in thread "main" java.lang.ArithmeticException: / by zero at ArithmeticTest.main(ArithmeticTest.java:31)
    

    二、字符串连接符

    • +既可以实现字符串的链接,同时可以实现字符串与其他数据类型“相连。又可以作为加法运算符。
      • 判断:只要+两边的操作数中有一个是字符串类型,则改加好就被当做字符串连接符处理,否则当作加法运算符

    三、关系/比较运算符

    • ">"表示是否大于运算符 ">="表示是否大于等于运算符
    • "<"表示是否小于运算符 "<="表示是否小于等于运算符
    • "=="表示是否等于运算符 "!="表示是否不等于运算符
    • 所有以运算符作为最终运算的表达式结果一定是boolean类型
    int a = 5;
    		int b = 4;
    		
    		//使用变量实现关系运算符的使用并打印结果
    		boolean b1 = a > b;
    		System.out.println("b1 = " + b1);//a大于b true
    		boolean b2 = a >= b;
    		System.out.println("b2 = " + b2);//a大于等于b true
    		boolean b3 = a < b;
    		System.out.println("b3 = " + b3);//a小于b false
    		boolean b4 = a <= b;
    		System.out.println("b4 = " + b4);//a小于等于b false
    		boolean b5 = a == b;
    		System.out.println("b5 = " + b5);//a等于b false
    		boolean b6 = a != b;
    		System.out.println("b6 = " + b6);//a不等于b true
    

    四、自增减运算符

    • ++表示自增运算符,用于使得当前变量自身的数值加1的效果
    • --表示自减运算符,用于使得当前变量自身的数值减一的效果
    int a = 3;
    		int b = 3;
    		System.out.println("a = " + a + "; b = " + b);//a = 3; b = 3
    		
    		//使用自增运算符
    		a++;
    		++b;
    		System.out.println("a = " + a + "; b = " + b);//a = 4; b = 4
    		
    		//使用自减运算符
    		a--;
    		--b;
    		System.out.println("a = " + a + "; b = " + b);//a = 3; b = 3
    

    前后++的区别:

    后++(i++):先让i的数值作为整个表达式的最终结果,然后再让i变量自身的数值加1;

    前++(++i):先让i变量自身的数值加1,然后变量的值作为整个表达式的结果

    //使用自增运算符
    		//后++(i++):先让i的数值作为整个表达式的最终结果,然后再让i变量自身的数值加1;
    		System.out.println(a++);//输出:3
    		System.out.println("a =" + a);//输出:4
    		//前++(++i):先让i变量自身的数值加1,然后变量的值作为整个表达式的结果
    		System.out.println(++a);//输出:5
    		System.out.println("a =" + a);//输出:5
    

    笔试考点:

    //笔试考点:
    		int ia = 3;
    		int ib = ia++;
    		System.out.println("ib = " + ib);//ib = 3;
    		System.out.println("ia = " + ia);//ia = 4;
    		int ic = ++ia;
    		System.out.println("ic = " + ic);//ic = 5;
    		System.out.println("ia = " + ia);//ia = 5;
    		
    		System.out.println(ia++ + ++ia);//输出:12
    		System.out.println("ia = " + ia);//ia = 7;
    		
    		System.out.println(ia++ + 3);//输出:10
    		System.out.println("ia = " + ia);//ia = 8;
    

    五、逻辑运算符

    1、逻辑运算符的概念和使用

    • &&表示逻辑与运算符,相当于“并且”,同真为真,一假为假。
    • ||表示逻辑或运算符,相当于“或者”,一真为真,同假为假。
    • !表示逻辑非运算符,相当于“取反”,真为假,假为真。
    • 逻辑运算符的操作数均为boolean表达式。
    public class LogicTest {
    	
    	public static void main(String [] args) {
    		
    		//声明两个boolean类型的变量并初始化
    		boolean b1 = true;
    		boolean b2 = false;
    		System.out.println("b1 = " + b1);
    		System.out.println("b2 = " + b2);
    		
    		System.out.println("----------------------");
    		boolean b3 = b1 && b2;
    		System.out.println("b3 = " + b3);//false
    		System.out.println(b1 || b2);//true
    		System.out.println(!b1);//false
    		System.out.println(!b2);//true
    	}
    }
    

    2、逻辑运算符的短路特性

    • 对于逻辑与运算符,若第一个表达式为假,则结果为假,此时跳过第二个表达式;

      //测试短路特性
      		int ia = 3;
      		int ib = 5;
      		//对于逻辑与运算符,若第一个表达式为假,则结果为假,此时跳过第二个表达式;
      		boolean b4 = (++ia == 3) && (++ib == 5);
      		System.out.println("b4 = " + b4);//b4 = false;
      		System.out.println("ia = " + ia);//ia = 4;
      		System.out.println("ib = " + ib);//ib = 5;
      
    • 对于逻辑或运算符,若第一个表达式为真则结果为真,此时跳过第二个表达式。

      //对于逻辑或运算符,若第一个表达式为真则结果为真,此时跳过第二个表达式。
      		boolean b5 = (++ia == 5) || (++ib == 5);
      		System.out.println("b5 = " + b5);//b5 = true;
      		System.out.println("ia = " + ia);//ia = 5;
      		System.out.println("ib = " + ib);//ib = 5;
      

    3、三目运算符的概念和使用

    • 条件/三目运算符:

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

    • 判断条件表达式是否成立,若成立执行表达式1,否则执行表达式2。

    //使用三目运算符判断是否为三位数
    		String b2 = (num > 99 && num < 1000) ? "是三位数" : "不是三位数";
    		System.out.println(num + ":" + b2);//99:不是三位数;100:是三位数;1000:不是三位数;
    
    /*
    	案例:提示用户输入两个整数,使用三目运算符找到最大值并打印出来。
    */
    
    import java.util.Scanner;
    
    public class MaxTest {
    	
    	public static void main(String [] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		
    		//输入两个整数
    		System.out.println("请输入两个整数:");
    		int ia = sc.nextInt();
    		int ib = sc.nextInt();
    		
    		//使用三目运算符找出两个整数中的最大值
    		int max = ia > ib ? ia : ib;
    		System.out.println("max = " + max);
    	}
    }
    

    4、赋值运算符的概念和使用

    • 赋值运算符:

      = 表示赋值运算符,用于将=右边的数据赋值为=左边的变量,覆盖变量原来的数值。

    • 赋值表达式本身也有值,其本身之值即为所赋之值。

    • +=、-=、*=、/=、....

    笔试考点:

    //笔试考点1:
    		byte b1 = 10;
    		System.out.println("b1 = " + b1);
    		//b1  = b1 + 2;//错误: 不兼容的类型: 从int转换到byte可能会有损失 byte + int 结果是int类型
    		//b1  = b1 + (byte)2;//错误: 不兼容的类型: 从int转换到byte可能会有损失 byte + byte 结果还是int类型
    		b1  = (byte)(b1 + 2);
    		System.out.println("b1 = " + b1);//b1 = 12;
    		b1 += 2;//+= 隐含强制转换,等价于b1  = (byte)(b1 + 2);
    		System.out.println("b1 = " + b1);//b1 = 14;
    
    //笔试考点2:
    		//ia == 2;-表示判断变量ia的数值是否等于2;
    		//2 == ia;- 表示判断2是否等于ia的数值,从结果上来说等价,推荐该方式
    		//ia = 2; - 表示将2赋值给变量ia,覆盖ia原来的数值
    		//2 = ia; - 编译报错  错误:意外的类型
    

    六、移位运算符

    1、概念

    • << 左移运算符,用于将数据的二进制位向左移动,右边使用0补充
    • 右移运算符 >>,用于将数据的二进制位向右移动,左边使用符号位补充。
    • 逻辑右移运算符 >>>,用于将数据的二进制位向右移动,左边使用0补充。

    2、移位运算符的使用

    /*
    	编程实现移位运算符的使用
    */
    
    public class MoveBitTest {
    	
    	public static void main(String [] args) {
    		
    		//声明一个byte类型的变量并初始化
    		byte b1 = 13;
    		//打印变量的值
    		System.out.println("b1 = " + b1);
    		
    		System.out.println("----------------");
    		//移位运算符的使用
    		//13的二进制是:0000 1101 => 左移一位的结果是:0001 1010 =>换算为十进制为:26
    		//byte b2 = b1 << 1;//错误: 不兼容的类型: 从int转换到byte可能会有损失
    		byte b2 = (byte)(b1 << 1);
    		System.out.println("b2 = " + b2);//b2 = 26;左移一位相当于当前整数的数值*2
    		System.out.println(b1 << 2);//输出:26;左移2位相当于当前整数的数值*4
    		
    		System.out.println("----------------");
    		System.out.println(b1 >> 1);//输出:6;左移1位相当于当前整数的数值/2
    		System.out.println(b1 >> 2);//输出:3;左移2位相当于当前整数的数值/4
    		
    		System.out.println("----------------");
    		//逻辑右移  对于非负数而言,逻辑右移和右移的效果是一致的
    		System.out.println(b1 >>> 2);//输出:3;左移2位相当于当前整数的数值/4
    	}
    }
    

    七、位运算符

    1、概念

    • &表示按位与运算符,按照二进制位进行与运算,同1为1,一0为0.
    • |表示按位或运算符,按照二进制位进行或运算,一1位1,同0位0.
    • ~表示按位取反运算符,按照二进制位进行取反,1为0,0为1.
    • ^表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1.

    2、位运算符的使用

    /*
    	编程实现位运算符的使用
    */
    
    public class BitTest {
    	
    	public static void main(String [] args) {
    		
    		//声明两个byte类型的变量并初始化
    		byte b1 = 11;
    		byte b2 = 13;
    		//打印变量的数值
    		System.out.println("b1 = " + b1);
    		System.out.println("b2 = " + b2);
    		
    		System.out.println("-------------------");
    		//实现为运算符的使用
    		//b1的二进制:0000 1011  
    		//b2的二进制:0000 1101
    		System.out.println(b1 & b2);//同1为1,一0为0;按位与后的二进制:0000 1001 => 转为十进制:9
    		System.out.println(b1 | b2);//一1为1,同0位0;按位或后的二进制:0000 1111 => 转为十进制:15
    		System.out.println(b1 ^ b2);//相同为0,不同为1; 按位异或后的二进制:0000 0110 => 转为十进制:6
    		System.out.println(~ b1);//1为0,0为1,;按位取反后的二进制:1111 0100 => 转为二进制:-12
    	}
    }
    

    八、运算符的优先级

    ![02运算符的优先级](D:Lagou课程资料模块一Java编程基础模块一 Java编程基础3任务三 运算符2_图片2运算符的优先级.png)

    • ()的优先级极高。
    • =的优先级极低。
    • 若无法确认优先级,则使用()来确保即可

    文章内容输出来源:拉勾教育Java高新训练营

    本文来自博客园,作者:寒露凝珠,转载请注明原文链接:https://www.cnblogs.com/china-soldier/p/14821153.html

  • 相关阅读:
    用initconnect+binlog实现用户操作追踪【转】
    INSERT INTO … SELECT 的锁【转】
    Memcached 高可用方案 Repcached
    关于MySQL建表对DML的影响【转】
    NoSQL之【memcached】学习
    关于MySQL insert into ... select 的锁情况
    MySQL数据库诊断——InnoDB关机问题 【转】
    Your document is being created
    Failure to Get Sequential Numbering Profile Option
    Runtime error '1004'
  • 原文地址:https://www.cnblogs.com/china-soldier/p/14821153.html
Copyright © 2011-2022 走看看