Java语言基础 学习03——运算符
算数运算符
算术运算符的介绍
| 运算符 | 说明 |
|---|---|
| + | 加法运算符 |
| - | 减法运算符 |
| * | 乘法运算符 |
| / | 除法运算符 |
| % | 取余,获取一个数除以另一个数的余数 ,例如 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。 |
运算结果:
| A | B | A && B | A || B | !A | |
|---|---|---|---|---|---|
| 值 | true | true | true | true | false |
| 值 | true | flase | false | true | false |
| 值 | false | true | false | true | true |
| 值 | false | false | false | false | true |
位运算符
| 运算符 | 说明 |
|---|---|
| & | 与 |
| | 或 |
| ~ | 去反 |
| ^ | 异或 |
| << | 左移位 |
| >> | 右移位 |
| >>> | 无符号右移位 |
位运算符操作的是整数类型的值,它分为位逻辑运算符(& | ^ ~ )和位移运算符(>> << >>>)
位逻辑运算符
位逻辑运算的运算方法

位逻辑运算符进行boolean类型的运算
| A | B | A & B | A | B | A^B | |
|---|---|---|---|---|---|
| 值 | true | true | true | true | false |
| 值 | true | flase | false | true | true |
| 值 | false | true | false | true | true |
| 值 | false | false | false | false | false |
位移运算符
位移运算的运算符方法

需要注意的是byte、short类型做>>>操作,可能会发生数据溢出,结果为负数
操作数要注意类型的取值范围
赋值运算符
| 运算符 | 说明 | 举例 | 等同 |
|---|---|---|---|
| = | 将运算符右边的值直接赋给左边 | a = b | a = b |
| += | 将运算符右边的值加上左边的值,再将结果赋给左边 | a += b + c | a = a + (b + c) |
| *= | 将运算符左边的值乘以右边的值,再将结果赋给左边 | a *= b + c | a =a * (b + c) |
| /= | 将运算符左边的值除以右边的值,再将结果赋给左边 | a /= b + c | a = a / (b + c) |
| %= | 将运算符左边的值除以右边的值,取余数,再将结果赋给左边 | a %= b + c | a = a % (b + c) |
| &= | 将运算符左边的值和右边的值的与操作结果赋给左边 | a &= b+c | a = a & (b + c) |
| != | 将运算符左边的值和右边的值的或操作结果赋给左边 | a != b + c | a = a ! (b + c) |
| ^= | 将运算符左边的值和右边的值的异或操作结果赋给左边 | a ^= b + c | a = a ^ (b + c) |
| <<= | 将运算符左边的值和右边的值的左移操作结果赋给左边 | a <<= b + c | a = a << (b+c) |
| >>= | 将运算符左边的值和右边的值的右移操作结果赋给左边 | a >>= b + c | a = a >> (b + c) |
| >>>= | 将运算符左边的值和右边的值的无符号右移操作结果赋给左边 | a >>>= b + c | a = 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版权协议,转载请附上原文出处链接和本声明。