Java算术运算符、关系运算符、逻辑运算符、赋值运算符详解与优先级关系

2021-09-14 00:00:00 赋值 关系 运算符

算术运算符、关系运算符、逻辑运算符、赋值运算符代码详解与优先级关系

  • 一、算术运算符

  • 二、关系运算符

  • 三、逻辑运算符

  • 四、赋值运算符

四种运算符优先级关系:

算术运算符>关系运算符>逻辑运算符>赋值运算符

一、算术运算符

《Java算术运算符、关系运算符、逻辑运算符、赋值运算符详解与优先级关系》

代码举例:

public static void main(String[] args){ 
    //除号: /
    int q = 12;
    int w = 5;
    double result1 = q / w;// 2.0
	double result3 = q / (w + 0.0);// 2.4
	double result4 = (double)q / w;// 2.4
	double result5 = (double)(q / w);// 2.0
    
    //取余运算: %
    //结果的符号与被模数的符号相同
    int m1 = -12;
    int n1 = 5;
    System.out.println(m1 % n1);// -12
    int m2 = 12;
    int n2 = -5;
    System.out.println(m2 % n2);// 12
    
    //(前)++ :先自增1,后运算
    //(后)++ :先运算,后自增1
    int a1 = 10;
    int b1 = ++a1;
    System.out.println("a1= " + a1 + ",b1= " + b1);//a1= 11,b1= 11
    int a2 = 10;
    int b2 = a2++;
    System.out.println("a2= " + a2 + ",b2= " + b2);//a2= 11,b2= 10
    int a3 = 10;
    a3++;
    int b3 = a3;
    System.out.println("b3= " + b3);//b3= 11,无论a3++还是++a3,结果单欧式11,因为没有运算,所以只自增
    //注意:==================================================
    short s1 = 10;
    s1 = s1 + 1;//错误
    s1++;//正确,自增1不会改变变量本身的数据类型
    byte b4 = 127;
    b4++;
    System.out.println("b4 = "+b4);// b4 = -128
}

二、关系运算符

《Java算术运算符、关系运算符、逻辑运算符、赋值运算符详解与优先级关系》

代码举例:

public static void main(String[] args){ 
    int i = 10;
    int j = 20;
    System.out.println(i == j);//false
    System.out.println(i = j);//20
     
    boolean b5 = false;
    //区分好==和=的区别。
    if(b5=true)
        System.out.println("结果为真");//输出"结果为真"
    else
        System.out.println("结果为假");
}

三、逻辑运算符

名称符号说明
逻辑与&两边都为true,结果才为true
逻辑或|只要一边为true,结果就为true
逻辑非!相反
逻辑异或^异或,追求的是“异”,两边都不同,结果才为true,否则为false
短路与&&两边都为true,结果才为true
短路或||只要一边为true,结果就为true

注意1:“&”和“&&”的区别:

&时,左边无论真假,右边都进行运算;
&&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算 。

注意2:“|”和“||”的区别:

|时,左边无论真假,右边都进行运算;
||时,如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算 。

《Java算术运算符、关系运算符、逻辑运算符、赋值运算符详解与优先级关系》

代码举例:

public static void main(String[] args){ 
    //“&”和“&&”的区别
    boolean q1 = true;
    q1 = false;
    int num1 = 10;
    if (q1 & (num1++ > 0)){ 
        System.out.println("我现在在北京");
    }else { 
        System.out.println("我现在在南京");//执行这条语句
    }
    System.out.println(num1);//输出11

    boolean q2 = true;
    q2 = false;
    int num2 = 10;
    if (q2 && (num2++ > 0)){ 
        System.out.println("我现在在北京");
    }else { 
        System.out.println("我现在在南京");//执行这条语句
    }
    //“|”和“||”的区别同理
    
    //面试题===========================================================================
	boolean x=true;
    boolean y=false;
    short z=42;
    //if(y == true)
    if((z++==42)&&(y=true))z++;//z==44
    if((x=false) || (++z==45)) z++;

    System.out.println("z"+z);//z==46
}

四、赋值运算符

  • 符号: =
    • 当“=”两侧数据类型不一致时, 可以使用自动类型转换或使用强制
      类型转换原则进行处理。
    • 支持连续赋值
  • 扩展赋值运算符: +=, -=, *=, /=, %=

注意:不会改变变量本身的数据类型

代码举例:

public static void main(String[] args){ 
    //1)
    short s = 3;
    s = s + 2;//报错
    s += 2;//不会改变变量本身的数据类型
    
    //2)
    int i = 1;
    i *= 0.1;
    System.out.println(i);//0
    i++;
    System.out.println(i);//1
    
    //3)
    int m = 2;
    int n = 3;
    n *= m++;// n = n * (m++);
    System.out.println("m=" + m);//3
    System.out.println("n=" + n);//6
    
    //4)
    int n = 10;
    n += (n++) + (++n);
    System.out.println(n);// 输出:32
}		
    原文作者:J a y
    原文地址: https://blog.csdn.net/weixin_43514899/article/details/109392871
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章