Java基础06:基本运算符

算术运算符:+,-,*,/,%

public class Hello {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a/b);  //0,结果取整
        System.out.println((double)(a/b));  //0,结果取整以后再转换也没用
        System.out.println(a/(double)b);  //0.5

        short c = 10;
        byte d = 8;
        System.out.println(c + d);  //如果有long类型参与计算,结果会自动转为long;否则,无论有没有int类型,结果都会转为int类型
        
        double pow = Math.pow(2, 3);  //Java中没有幂运算的符号,所以要借助Math函数库
        System.out.println(pow);
    }
}

拓展:字符串连接

public class Hello {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a + b);  //30
        System.out.println("String " + a + b);  //String 1020,只要+前面出现了字符串,则所有变量值都会转换成字符串连接
        System.out.println(a + b + " String " + a + b);  //30 String 1020,如果字符串相加在后面,则会先进行算术运算,再转换成字符串连接
    }
}

自增自减运算符:++,--

public class Hello {
    public static void main(String[] args) {
        int a = 3;
        int b = a++;  //先给b赋值,再自增
        //a = a + 1;(隐藏的步骤)
        System.out.println(a);  //4
        System.out.println(b);  //3
        //a = a + 1;
        int c = ++a;  //先自增,再给c赋值
        System.out.println(a);  //5
        System.out.println(c);  //5
    }
}

赋值运算符:=,+=,-=,*=,/=

a += b等价于a = a + b,其他的以此类推

关系运算符:>,<,>=,<=,==,!= instanceof

输出结果只有true和false

逻辑运算符:&&,||,!

public class Hello {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        System.out.println(a && b);  //逻辑与运算,同真才真
        System.out.println(a || b);  //逻辑或运算,同假才假
        System.out.println(!(a && b));  //逻辑非运算,真假反转

        //短路运算:&&判断时,如果第一个就为假,那后面的代码不会再执行判断

    }
}

拓展:短路运算

public class Hello {
    public static void main(String[] args) {
        //&&在判断时,如果第一个就为假,那后面的代码不会再执行判断
        int a = 2;
        boolean b = false && (a++>0);
        System.out.println(a);  //2,说明后面的a++语句并没有执行
    }
}

位运算符:&,|,^,~,<<,>>,>>>

&,|,^,~(与、或、异或、非)

&运算只有对应位置同时为1才为1,|运算同时为0才为0,^运算对应位置相同为0,不同为1,~运算则全部反转

以二进制的形式演示位运算,假设A和B的二进制显示分别如下:

A = 0011 1100

B = 0000 1101

A & B 0000 1100
A | B 0011 1101
A ^ B 0011 0001 异或
~B 1111 0010

<<,>>(左移,右移)

在二进制中,左移<<代表数字从第一个非0数字开始的部分整体往左移动一位,在数值大小上相当于乘以2,右移则相反

0 0000 0000 0
1 0000 0001 2>>1
2 0000 0010 2
4 0000 0100 2<<1
8 0000 1000 2<<2
16 0001 0000 2<<3

拓展:2 * 8怎么运算速度最快?

public class Hello {
    public static void main(String[] args) {
        System.out.println(2<<3);  //16,2 * 8在位运算中相当于左移3次,运算效率极高!
    }
}

条件运算符:x ? y : z

public class Hello {
    public static void main(String[] args) {
        System.out.println(true ? 1 : 2);  //1,x为真时返回y,为假时返回z
        System.out.println(false ? 1 : 2);  //2
    }
}

Java基础06:基本运算符

上一篇:【appium】appium环境搭建


下一篇:薅羊毛技巧,Python多平台自动签到兑换奖励,班上的同学好羡慕