运算符(Java语言)

  • 算数运算符
  • 除法——/
  • 取余——%
  • 关系运算符
  • 逻辑运算符
  • 逻辑与——&&
  • 逻辑或——||
  • 非——!
  • 短路
  • 位运算符
  • 按位与——&
  • 按位或——|
  • 按位异或——^
  • 按位取反——~
  • 移位操作符
  • 左移操作符——<<
  • 右移操作符——>>
  • 无符号右移——>>>
  • 条件运算符


算数运算符

我们所熟知的算数运算符包括:+,-,*,/,%,运算规则比较简单,值得注意的是除法

除法——/

举个例子:

public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a/b);
    }

同样跟C语言一样,整数与整数相除结果得到的是整数,所以结果为0,而不是0.5。当然还有一点就是除数不能是0。

public static void main(String[] args) {
        int a = 1;
        int b = 0;
        System.out.println(a/b);
    }

java 中除法的方法表示名称 java中除法是怎么算的_java


我们可以看到,除数如果是0,结果直接会报错,因此我们在进行除法运算时除数是不能为0的。

取余——%

取余的运算同样不复杂,只是需要我们能够细心。我们来看一个例子:

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);
    }

大家都会去求第一个取余结果,但是负数同样可以参加取模运算,所以遇到负数取余就跟初高中一样运算就好了,以第四个为例,-10除以-3商数为3,余-1,因此结果为-1。

关系运算符

关系运算符主要有六个:==,!=,<,>,<=,>=
我们来看一个例子:

public static void main(String[] args) {
        int a = 10;
        int b = 20;
        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);
    }

java 中除法的方法表示名称 java中除法是怎么算的_运算符_02


从结果可以看到,使用一个关系运算符,得到的结果是布尔类型的值(true或者false)。当然不仅如此,在后期认识if()语句时,括号内的也只能是布尔类型的表达式。所以在Java中用if(0)是不可以的。

逻辑运算符

逻辑与——&&

基本表达:表达式1&&表达式2
注:这两个表达式都只能是布尔类型的表达式。
注意点:如果表达式1为假,就不执行表达式2了

逻辑或——||

基本表达:表达式1||表达式2
注:这两个表达式都只能是布尔类型的表达式。
注意点:如果表达式1为真,就不执行表达式2了。

非——!

基本表达:!(表达式)
注:表达式只能为布尔类型的表达式。

短路

关于短路,举个例子:

public static void main(String[] args) {
        System.out.println(10 > 20 && 10 / 0 == 0);
        System.out.println(10 < 20 || 10 / 0 == 0);
    }

我们知道,除数是不能为0的,但是在这段代码中,并没有报错,原因就在于在判断10>20时,已经为假了,所以并不会执行后面的语句,同理,下面10=<20已经为真,并不会执行后面的语句。所以并不会报错。

位运算符

按位操作按的位是二进制位,因此我们在进行按位运算时,要将数的大小按照二进制位写出来。

按位与——&

原则:对应比特位都为1才为1,否则为0。
例子:
0000 1010
0010 0111
结果:0000 0010

按位或——|

原则:对应比特位都为0才为0,否则为1。
例子:
0000 1011
0100 0111
结果:
0100 1111

按位异或——^

原则:对应比特位一样的是0,不一样的为1。
例子:
0000 1011
0110 1110
结果:
0110 0101

按位取反——~

原则:对应比特位取反,0取1,1取0。
例子:
0000 1011
结果:
1111 0100

移位操作符

移位操作符包含三个:<<(左移),>>(右移),>>>(无符号右移)

左移操作符——<<

原理:二进制位向左移动x位,空出的位置补0。
例子1:
0000 1011<<1
结果:
0001 0110
例子2:
0000 1011<<2
结果:
0010 1100

右移操作符——>>

原理:二进制位向右移动x位,空出的位置补符号位(正数补0,负数补1)。
例子1:
0000 1011>>1
结果:
0000 0101
例子2:
0000 1011>>2
结果:
0000 0010
例子3:
1111 1111>>1
结果:
1111 1111

无符号右移——>>>

原理:二进制位向右移动x位,空出的位置补0。
例子:
1111 1111>>>1
结果:
0111 1111
从原理我们就可以发现,因为只有右移可能需要考虑符号位,而左移并不需要考虑符号位,所以没有无符号左移!!!

条件运算符

条件运算符只有一个:
表达式1?表达式2:表达式3,这个运算符同样在C语言中也同样存在,当表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为false 时, 整个表达式的值为 表达式3 的值。
关于运算符的知识就是这么多了,大部分在C语言部分都已经了解过了,当然如果有什么建议也可以提出来,欢迎各位私信。谢谢大家!