Java语言基础——运算符

算数运算符

算术运算符的介绍

运算符说明
+加法运算符
-减法运算符
*乘法运算符
/除法运算符
%取余,获取一个数除以另一个数的余数 ,例如 5%2 得到的是1
++自增,在原有的值上加1,例如 int a = 3;a++;得到的a是4
--自减,在原有的值上减1例如 int a = 3;a- -; 得到的a是2
  • ”-“和”+”还可以作为数据的负、正号,例如-5,+6;
  • 在运算过程中,Java也是遵守数学中的运算规则,例如:除法和取余运算中0不能为被除数,否则会报错

++和- -

在代码中++ 和 - - 可以放在值的前面也可以放在值的后面,但放前面和放后面是有很大区别的,我们先看段代码:

public class Main {
    public static void main(String[] args) {
        int a = 5;
        int b;
        b = a++;
        System.out.println("b = a++;");
        System.out.println("a = "+ a + "    b =" + b);
        b = ++a;
        System.out.println("b = ++a;");
        System.out.println("a = "+ a + "    b =" + b);
        b = a--;
        System.out.println("b = a--;");
        System.out.println("a = "+ a + "    b =" + b);
        b = --a;
        System.out.println("b = --a;");
        System.out.println("a = "+ a + "    b =" + b);
    }
}

运行结果
在这里插入图片描述
从运行的结果不难看出,自增、自减放在数值前后的一个区别,首先b=a++;b=a--其实就等于“b=a;a =a +1;b=a;a=a-1”,而b= ++a;b=--a其实就等于“a= a+1;b=a;a=a-1;b=a"
总结:自增、自减放在值得后面是先将原值参与表达式运算,再实现原值的自增或自减,放在值得前面则是先完成原值的自增或自减,再参与运算

关系运算符

关系运算符的介绍

运算符说明
>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于

关系运算符的运算结果是boolean类型的值

逻辑运算符

运算符说明
&&和,等同于and,只有运算符两边的值都为true时,整个运算的值才是true否则是false
||或。等同于or,当运算符两边的值有一个或两个为true时,整个运算的值就是true否则是false
!非,否定当前值,即将true说是false,将false说是true。

运算结果:

ABA && BA || B!A
truetruetruetruefalse
trueflasefalsetruefalse
falsetruefalsetruetrue
falsefalsefalsefalsetrue

位运算符

运算符说明
&
|
~去反
^异或
<<左移位
>>右移位
>>>无符号右移位

位运算符操作的是整数类型的值,它分为位逻辑运算符(& | ^ ~ )和位移运算符(>> << >>>)

位逻辑运算符

位逻辑运算的运算方法

在这里插入图片描述

位逻辑运算符进行boolean类型的运算

ABA & BA | BA^B
truetruetruetruefalse
trueflasefalsetruetrue
falsetruefalsetruetrue
falsefalsefalsefalsefalse

位移运算符

位移运算的运算符方法

在这里插入图片描述需要注意的是byte、short类型做>>>操作,可能会发生数据溢出,结果为负数
操作数要注意类型的取值范围

赋值运算符

运算符说明举例等同
=将运算符右边的值直接赋给左边a = ba = b
+=将运算符右边的值加上左边的值,再将结果赋给左边a += b + ca = a + (b + c)
*=将运算符左边的值乘以右边的值,再将结果赋给左边a *= b + ca =a * (b + c)
/=将运算符左边的值除以右边的值,再将结果赋给左边a /= b + ca = a / (b + c)
%=将运算符左边的值除以右边的值,取余数,再将结果赋给左边a %= b + ca = a % (b + c)
&=将运算符左边的值和右边的值的与操作结果赋给左边a &= b+ca = a & (b + c)
!=将运算符左边的值和右边的值的或操作结果赋给左边a != b + ca = a ! (b + c)
^=将运算符左边的值和右边的值的异或操作结果赋给左边a ^= b + ca = a ^ (b + c)
<<=将运算符左边的值和右边的值的左移操作结果赋给左边a <<= b + ca = a << (b+c)
>>=将运算符左边的值和右边的值的右移操作结果赋给左边a >>= b + ca = a >> (b + c)
>>>=将运算符左边的值和右边的值的无符号右移操作结果赋给左边a >>>= b + ca = a >>> (b + c)
  • 之前我们再数据运算时需要注意赋值符号 = 两边的数据类型,例如:byte a = 1; a = a + 1; 这样是会报错的,因为整数的默认类型是int类型,所以1是int类型,byte类型要比int类型精度低。而是用 += 复合复制符号就不会。
  • 复合赋值符号虽然很强大,但不能进行复杂的运算表达式,例如:a = (2 + 3 - 1) * 5 / 2

其他运算符号

圆括号
圆括号的作用是提升计算过程中的优先级,例如 a = a * (b +c),这会优先计算b+c,需要注意的是在Java没有中括号、大括号等数学中提升优先级的符号,例如数学中:a = e * [(a + b) * (c / d)]我们在代码中是这样表示的a= e( (a + b) * (c / d))

运算符的优先级

运算符的优先级决定了表达式中运算的顺序

优先级描述运算符
1圆括号()
2正负号+、-
3一元运算符++、- -、!
4乘 除 取余*、/、%
5加减+、-
6移位运算>>、<<、>>>
7比较是否相等==、!=
8按位与操作&
9按位异或操作^
10按位或操作|
11逻辑与运算&&
12逻辑或运算||
14三目运算符?:
15赋值= 、+=、-=、*=、/=、%=、&=、|=、^=、>>=、<<=、>>>=

版权声明:本文为weixin_43273271原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。