:Java运算符

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:Java运算符相关的知识,希望对你有一定的参考价值。

文章目录

运算符就是对操作数进行操作的符号,例如a+bab是操作数,+是运算符。Java中运算符和C语言中的运算符基本一致(当然也有自己的特点)。运算符主要有以下几类

  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 移位运算符
  • 条件运算符

一:算数运算符

(1)基本算数运算符:+-*\\%

  • 它们都是二元运算符,也即运算时需要左右两个操作数

①:两个int相除时结果仍为int,同时还会向下取整,这一点很多人容易犯错

public class TestDemo 
    public static void main(String[] args) 
        int a = 3;
        int b = 2;
        System.out.println(a / b);//实际输出1,舍弃小数位

    

②:当两侧操作数类型不一致时,会向类型大的提升,这里尤其注意/

public class TestDemo 
    public static void main(String[] args) 
        // 类型提升
        System.out.println(1+0.2);//1已经被提升为了double,输出1.2

        //注意/运算符
        System.out.println(5/2);//输出2
        System.out.println((float)5/2);//输出2.5
        System.out.println(5/(float)2);//输出2.5
        System.out.println((float)(5/2));//输出2.0
    

③:\\%运算时,右操作数不能为0

  • 在数学中叫做除数不能为0
  • 程序运行后会抛出异常
public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        int b = 0;
        System.out.println(a / b);

    

④:%也可以操作负数

public class TestDemo 
    public static void main(String[] args) 
        System.out.println(10 % 3);
        System.out.println(10 % -3);
        System.out.println(-10 % 3);
        System.out.println(-10 % -3);
    

(2)增量运算符:+=-=*=\\=%=

  • 这一部分和C语言一致
  • 注意:增量运算符具有自动类型转换的功能
public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        a+=2; //相当于a=a+2
        System.out.println(a);

        int b = 1;
        b-=2; //相当于b=b-2
        System.out.println(b);

        int c = 1;
        c*=2; //相当于c=c*2
        System.out.println(c);

        int d = 1;
        d/=2; //相当于d=d/2
        System.out.println(d);

        int e = 3;
        e%=2; //相当于e=e%2
        System.out.println(e);
    

(3)自增自减运算符:++--

  • 如果单独使用,那么【前置++】和【后置++】无任何区别
  • 如果混合使用,那么【前置++】是先+1然后再使用变量+1之后的值,【后置++】则相反
public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        System.out.println(a++);//先使用故输出1,然后a变为2
        System.out.println(++a);//先++变为3然后输出
    

二:关系运算符:==!=<><=>=

  • 注意区分===
  • 关系运算符的结果只有两种可能truefalse
  • 不存在类似于a<b<c这样的操作
public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        int b = 2;
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a<b);
        System.out.println(a>b);
        System.out.println(a<=b);
        System.out.println(a>=b);
    

三:逻辑运算符:&&||

(1)逻辑与:&&

  • &&左右两侧必须都是boolean类型

  • 规则为:遇假则假、全真则真

  • 运算时从左到右依次判断,一旦某个表达式为false,则结果直接返回false,后续表达式不再执行(“短路”现象)

public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        int b = 2;
        System.out.println(a == 1 && b == 2);
        System.out.println(a == 1 && b > 100);
        System.out.println(a > 100 && b == 2);
        System.out.println(a > 100 && b > 100);

    

短路现象

public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        int b = 2;
        System.out.println(((a > b) && ((19 / 0) == 0))); //a>b返回false,直接返回false,虽然后面除数为0,但是不执行
    

(2)逻辑或:||

  • ||左右两侧必须都是boolean类型
  • 规则为:遇真则真、全假则假
  • 运算时从左到右依次判断,一旦某个表达式为true,则结果直接返回true,后续表达式不再执行(“短路”现象)
public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        int b = 2;
        System.out.println(a == 1 || b == 2);
        System.out.println(a == 1 || b > 100);
        System.out.println(a > 100 || b == 2);
        System.out.println(a > 100 || b > 100);

    

短路现象

public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        int b = 2;
        System.out.println(((a < b) || ((19 / 0) == 0))); //a<b返回true,直接返回true,虽然后面除数为0,但是不执行
    

(3)逻辑非:!

  • !后面只能接布尔表达式,而不能像C语言一样出现类似于!1!0的操作
  • 规则为:真变假、假变真
public class TestDemo 
    public static void main(String[] args) 
        int a = 1;
        System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
        System.out.println(!(a != 1)); // a != 1 为false,取个非就是true

    

四:位运算符:&|^~

关于位运算符这里就不详细展开了,只说一下具体规则。位运算符会针对比特位进行运算

  • 按位与(&:如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
  • 按位或(|:如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
  • 按位异或(^:如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1
  • 按位取反(^:如果该位为 0 则转为 1, 如果该位为 1 则转为 0

五:移位运算符

以上是关于:Java运算符的主要内容,如果未能解决你的问题,请参考以下文章

java数组元素是怎么分辨小数的

java 除法运算如何保留小数

java一个整数除以一个小数为啥的到小数

位运算 - 异或

Java_计算器001,支持加减乘除,括号,小数点,√,^ 运算

JAVA 中除法后小数精度问题