Java中&与&&的区别,Java中|与||的区别,Java算术运算符,Java比较运算符,Java逻辑运算符,Java位运算符,Java三元运算符

运算符:算术运算符

运算符运算范例结果
+正号+33
-负号b=4;-b-4
+5+510
-6-42
*3*412
/5/51
%取模(取余)7%52
++自增(前):先运算后取值a=2;b=++aa=3;b=3
++自增(后):先取值后运算a=2;b=a++a=3;b=2
自减(前):先运算后取值a=2;b=–aa=1;b=1
自减(后):先取值后运算a=2;b=a–a=1;b=2
+字符串连接“He”+“llo”“Hello”

除号

class Aritest {
    public static void main(String[] args) {
        
        int num1 = 12;
        int num2 = 5;
        int jieguo1 = num1 / num2;
        System.out.println(jieguo1); // 2
        
        int jieguo2 = num1 / num2 * num2;
        System.out.println(jieguo2); // 10

        // 小学加减乘除
        double jieguo3 = num1 / num2; //2.0
        double jieguo4 = num1 / num2 + 0.0; //2.0
        double jieguo5 = num1 / (num2 + 0.0); //2.4
        double jieguo6 = (double)num1 / num2; //2.4
        double jieguo7 = (double)(num1 / num2); //2.0
        System.out.println(jieguo3);
        System.out.println(jieguo4);
        System.out.println(jieguo5);
        System.out.println(jieguo6);
        System.out.println(jieguo7);
        
    }
}

注意:取余运算结果的符号与被摸数的符号相同

        // %:取余运算
        int m1 = 12;
        int n1 = 5;
        System.out.println("m1 % n1 = " + m1 % n1);

        int m2 = -12;
        int n2 = 5;
        System.out.println("m2 % n2 = " + m2 % n2);

        int m3 = 12;
        int n3 = -5;
        System.out.println("m3 % n3 = " + m3 % n3);

        int m4 = -12;
        int n4 = -5;
        System.out.println("m4 % n4 = " + m4 % n4);


        int a1 =10;
        int b1 = ++a1;
        System.out.println("a1 = " + a1 + ",b1 = " + b1);

        int a2 =10;
        int b2 = a2++;
        System.out.println("a2 = " + a2 + ",b1 = " + b2);

        //注意点:
        short d1 = 1;
        //d1 = d1 +1;//编译失败
        //d1 = (short)(d1 + 1); //正确的
        d1++; //自增1不会改变本身变量的数据类型
        System.out.println(d1);


结果:

m1 % n1 = 2
m2 % n2 = -2
m3 % n3 = 2
m4 % n4 = -2
a1 = 11,b1 = 11
a2 = 11,b1 = 10

运算符:比较运算符

运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否是类的对象“Hello” instanceof Stringtrue

▶ 比较运算符的结果都是Boolean型,也就是要么是true,要么是false
▶ 比较运算符 “==” 不能写成 “=”

public class comparetest {
    public static void main(String[] args) {
        int i = 20;
        int j = 10;
        System.out.println(i == j); //false
        System.out.println(i = j); //20

        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b2 == b1); //false , b2和b1不相等
        System.out.println(b2 = b1); //true ,b1赋值给b2

        boolean bb1 = false;
        if(bb1 == true) {
            System.out.println("结果为真");
        }
        else {
            System.out.println("结果为假"); //判断结果为假
        }
    }
}

运算符:逻辑运算符

逻辑运算符只适用于Boolean类型

运算符解释运算符解释备注
&逻辑与&&短路与
|逻辑或||短路或
!逻辑非^逻辑异或
aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalseture
falsetruefalsefalsetruetruetureture
falsefalsefalsefalsefalsefalseturefalse

&与&&

区分 & 与 &&
相同点1:& 与 && 的运算结果相同
相同点2:当符号左边时true时,二者都会执行符号右边的运算
不同点:当符合左边的时false时,&会继续执行符合右边的,&&则不会执行
开发中推荐使用&&

|与||

区分:| 与 ||
相同点1:& 与 && 的运算结果相同
相同点2:当符号左边时false时,二者都会执行符号右边的运算
不同点:当符合左边的时true时,|会继续执行符合右边的,||则不会执行
开发中推荐使用||

public class logictest {
    public static void main(String[] args) {
        boolean b1 = true;
        //b1 = false;
        int num1 = 10;
        if(b1 & (num1++ > 0)){
            System.out.println("结果A"); //当b1=true时,输出:结果A
        }else{
            System.out.println("结果B"); //当b1=false时,输出:结果b
        }
        System.out.println("num1 = " + num1); //当b1=true时,输出:num1 = 11。当b1=false时,输出:num1 = 11

        boolean b2 = true;
        //b2 = false;
        int num2 = 10;
        if(b2 && (num2++ > 0)){
            System.out.println("结果A"); //当b1=true时,输出:结果A。
        }else{
            System.out.println("结果B"); //当b1=false时,输出:结果b
        }
        System.out.println("num2 = " + num2); //当b1=true时,输出:num1 = 11。当b1=false时,输出:num1 = 10

    }
}

运算符:位运算符

运算符运算范例位运算符的细节
<<左移3 << 2 = 12 —> 3*2*2=12空位补0,被一次的高位丢弃,空缺位补0
>>右移3 >> 1 = 1 —> 3/2=1被移位的的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>无符号右移3 >>> 1 = 1 —> 3/2=1被移位的二进制最高位无论是0或者是1,空缺位都用0补。
&与运算6 & 3 =2二进制位进行&运算,只有1&1时结果是1,否则是0。
|或运算6 | 3 = 7二进制位进行|运算,只有0|0时结果是0,否则是1。
^异或运算6 ^ 3 = 5相同二进制位进行运算,结果是0;11=0,00=0,<br>不相同二进制位运算结果是1;10=1,01=1
~取反运算~6 = -7正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反

<< 和 >> 结论:

位运算符操作的都是整形的数据
<< : 在一定范围内,每向左移1位,相当于 * 2
<< : 在一定范围内,每向右移1位,相当于 / 2

在这里插入图片描述

**& 和 | 和 ^ **
在这里插入图片描述

public class bittest {
    public static void main(String[] args) {
        int i = 21;
        System.out.println("i << 2 = " + (i << 2)); //结果:i << 2 = 84
        System.out.println("i << 3 = " + (i << 3)); //结果:i << 3 = 168
        System.out.println("i << 26 = " + (i << 26)); //结果:i << 26 = 1409286144
        System.out.println("i << 27 = " + (i << 27)); //结果:i << 27 = -1476395008

        int m = 12;
        int n = 5;
        System.out.println("m & n = " + (m & n)); //结果:m & n = 4
        System.out.println("m | n = " + (m | n)); //结果:m | n = 13
        System.out.println("m ^ n = " + (m ^ n)); //结果:m ^ n = 9
    }
}

交换两个变量的值

        int num1 = 10;
        int num2 = 20;
        System.out.println("num1=" + num1 + ",num2=" + num2);

        //方式一:定义临时变量的方式
        int temp = num1;
        num1 = num2;
        num2 = temp;
        System.out.println("num1=" + num1 + ",num2=" + num2);

运算符:三元运算符

1.结构:(条件表达式)?表达式1 : 表达式2

2.说明
① 条件表达式的结果为Boolean类型

② 更具条件表达式真或假,决定执行表达式1,还是表达式2.

  • 如果表达式为true,则执行表达式1
  • 如果表达式为false,则执行表达式2

③ 表达式1和表达式2的类型要求是一致的

④ 三元运算符可以嵌套使用

3.凡是可以使用三元运算符的地方,都可以改些为if-else

4.如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先使用三元运算符。原因:简洁、执行效率高。

public class SanYuanTest {
    public static void main(String[] args) {
        int m1 = 12;
        int n1 = 5;
        int max = (m1 > n1)? m1 : n1;
        System.out.println(max);

        double num = (m1 > n1)? 2 : 1.0;
        System.out.println(num);

        //(m > n)? 2 : "n大"; //字符类型没统一编译错误
        String maxStr = (m1 > n1)? "m1大" : "n1大";
        System.out.println(maxStr);

        n1 = 12;
        String maxStr1 = (m1 > n1)? "m1大" : ((m1 == n1)?  "m1和n1相等" : "n1大");
        System.out.println(maxStr1);

    }
}
        //获取三个数的最大值
        int i1 = 12;
        int i2 = 30;
        int i3 = -45;
        int max1 = (i1 > i2)? i1 : i2;
        int max2 = (max1 > i3)? max1 : i3;
        System.out.println("三个数中最大的值为:" + max2); 

        int max3 = (((i1 > i2)? i1 : i2) > i3)? ((i1 > i2)? i1 : i2) : i3;
        System.out.println("三个数中最大的值为:" + max3);
posted @ 2022-05-24 14:38  雪花凌落的盛夏  阅读(17)  评论(0编辑  收藏  举报  来源