• Java入门系列-06-运算符


    这篇文章为你搞懂2个问题

    1. java 中的常用运算符有哪些?如何使用?
    2. 这些运算符的运算优先级是怎样的?

    算数运算符

    明显是做数学运算的,包括以下符号:

    1. + 加法运算
      敲一敲:
    public class DemoAdd {
    	public static void main(String[] args) {
    		int sum=2+3;
    		System.out.println(sum);//输出变量 sum 的值
    		int a=5;
    		int b=3;
    		int result=a+b;//将变量 a 的值与变量 b 的值相加
    		System.out.println(result);
    		result+=20;//相当于 result=result+20;
    		System.out.println(result);
    	}
    }
    

    当对一个变量本身进行算数运算可以使用 +=-=*=/=%= 进行简化
    int a=10;a+=2; 在声明变量后进行操作
    但声明变量时赋值便是非法的 int x+=10;

    1. - 减法运算
      敲一敲:
    public class DemoMinus {
    	public static void main(String[] args) {
    		int diff=2-3;
    		System.out.println("差:"+diff);
    		double a=55.4;
    		double b=5.2;
    		double result=a-b;
    		System.out.println("变量a的值减变量b的值等于:"+result);//结果不一定精准
    		result-=10;//相当于 result=result-10;
    		System.out.println("结果:"+result);
    	}
    }
    
    1. * 乘法运算
      敲一敲:
    public class DemoMultiply {
    	public static void main(String[] args) {
    		int product=2*3;
    		System.out.println("积:"+product);
    		double a=10;
    		double b=5;
    		double result=a*b;
    		System.out.println("变量a的值乘以变量b的值等于:"+result);
    		result*=10;//相当于 result=result*10;
    		System.out.println("结果:"+result);
    	}
    }
    
    1. / 除法运算
      敲一敲:
    public class DemoDivide {
    	public static void main(String[] args) {
    		int product=5/2;
    		System.out.println("商:"+product);
    		double a=5;
    		double b=2;
    		double result=a/b;
    		System.out.println("变量a的值除以变量b的值等于:"+result);
    		result/=10;//相当于 result=result/10;
    		System.out.println("结果:"+result);
    	}
    }
    
    
    1. % 取模、取余运算
      敲一敲:
    public class DemoRemainder {
    	public static void main(String[] args) {
    		//正常求余数
    		int result=10%3;
    		System.out.println("10%3="+result);
    		//小数在前
    		int result1=2%5;
    		System.out.println("2%5="+result1);
    		//其中一个是负数
    		int result2=-3%2;
    		System.out.println("-3%2="+result2);
    		//两个数都是负数
    		int result3=-2%-5;
    		System.out.println("-2%-5="+result3);
    	}
    }
    
    
    1. ++ -- 自增、自减运算符
      敲一敲:
    public class DemoSelf {
    	public static void main(String[] args) {
    		int a=10;
    		a++;//后置自增
    		System.out.println(a);//11
    		--a;//前置自减
    		System.out.println(a);//10
    		System.out.println(++a);//11
    		System.out.println(a++);//11
    		System.out.println(a);//12
    	}
    }
    

    自增、自减运算符是对一个变量本身进行加1或减1的操作
    运算符可以防置在变量前或后
    前置的运算符会先进行加1或减1的操作然后再使用,而后置则是先使用再进行操作

    比较运算符

    对比两者之间的关系,运算后的结果是布尔值

    符号 介绍
    > 大于
    < 小于
    == 等于 用于比较值和内存地址
    != 不等于
    >= 大于等于
    <= 小于等于

    敲一敲:

    public class DemoCompare {
    	public static void main(String[] args) {
    		System.out.println(10>5);//10大于5 true
    		System.out.println(10<5);//10小于5 false
    		System.out.println(1!=1);//1不等于1 false
    		System.out.println(10==5);//10等于5 false
    		System.out.println(9>=9);//9大于等于9 true
    		System.out.println(5<=8);//5小于等于8 true
    	}
    }
    

    逻辑运算符

    符号 介绍
    && 与 运算符两边都为true运算结果为true
    || 或 运算符只要一边为true运算结果为true
    ! 非 取反,为true时结果为false,为false时结果为true

    敲一敲:

    public class DemoLogic {
    	public static void main(String[] args) {
    		int age=50;
    		int money=100;
    		//两边都不符合条件 false
    		System.out.println((age<40)&&(money>100));
    		//只符合一个条件 false
    		System.out.println((age<60)&&(money>100));
    		//两边都符合条件 true
    		System.out.println((age<60)&&(money>30));
    
    		//两边都不符合条件 false
    		System.out.println((age<40)||(money>100));
    		//只符合一个条件 true
    		System.out.println((age<60)||(money>100));
    		//两边都符合条件 true
    		System.out.println((age<60)||(money>30));
    		
    		boolean isBig=age>60;//false
    		System.out.println(!isBig);//取反 true
    	}
    }
    

    位运算符

    用于对二进制数据的操作

    符号 介绍
    >> 对二进制向右位移n位
    << 对二进制向左位移n位
    & 位与运算 同位的二进制都为1时结果为1
    | 位或运算 同位的二进制有一个为1时结果为1
    ^ 异或 从二进制高位开始比较,如果相同则为0,不相同则为1。
    ~ 位非

    敲一敲:
    demo1

    public class DemoBit {
    	public static void main(String[] args) {
    		System.out.println(10>>1);//5
    		System.out.println(7<<1);//14
    	}
    }
    

    位移运算符操作的是二进制,上例中 10 的二进制是 1010
    向右位移1位 变成了 101 左边空缺将用 0 补上 0101 转为10进制为 5
    向左位移原理一样 7 的二进制为 0111 向左位移后,右边补0 为1110
    转为10进制为 14

    demo2

    public class DemoBit {
    	public static void main(String[] args) {
    		System.out.println(5|1);//5
    		System.out.println(3|2);//3
    	}
    }
    

    上例中 5 和 1 转为二进制如下
    5 0101
    1 0001
    5 0101
    对应的位中只要有1 结果为1

    demo3

    public class DemoBit {
    	public static void main(String[] args) {
    		System.out.println(7^4);//3
    	}
    }
    

    7和4的二进制如下
    7 0111
    4 0100
    3 0011
    对应位值相同为0不同为1

    运算符的优先级

    优先级顺符由高到低是
    小括号 > 算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符

    试一试

    1. 将一个整数除以2或乘2而不使用 + - * / ,如何实现?

    鼓励你在留言中发布自己的答案,与其他人一起交流,并在百度上搜索相关问题

    关注公众号"享智同行"回复"006"获取答案

  • 相关阅读:
    PING机制
    二叉树基本概念
    哈希表
    各种排序算法的利弊
    Linux的目录文件权限问题
    Redhat 7 安装Samba服务
    Redhat7 搭建vsftpd(三种方式登录)
    Redhat7 Firewalld防火墙
    将Nginx加入service服务中
    Nginx优化
  • 原文地址:https://www.cnblogs.com/AIThink/p/9642166.html
Copyright © 2020-2023  润新知