Java运算符
算术运算符
+ | 加法 - 相加运算符两侧的值 | A + B |
---|---|---|
- | 减法 - 左操作数减去右操作数 | A – B |
* | 乘法 - 相乘操作符两侧的值 | A * B |
/ | 除法 - 左操作数除以右操作数 | B / A |
% | 取余 - 左操作数除以右操作数的余数 | B%A |
++ | 自增: 操作数的值增加1 | B++ 或 ++B (注:B++是先运算在加1,++B是先加1,再运算。 |
– | 自减: 操作数的值减少1 | B–和--B(和上面同理) |
拓展
Java中没有幂运算
但是,Java里面有强大的工具类Math。
double pow=Math.pow(3, 2);
System.out.println(pow);
关系运算符
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
---|---|---|
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
位运算符
例如:
A:0011_011
B: 0101_101
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | A&&B:0001_001 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 | A||B:011_111 |
^ | 如果相对应位值相同,则结果为0,否则为1 | A^B:0110_110 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | A~:1100_100 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
最后三个另外来讲:
位运算是底层算法,效率极高。只要求了解!!!
例如:
二进制 | 十进制 |
---|---|
0000_0001 | 1 |
0000_0010 | 2 |
0000_0100 | 4 |
0000_1000 | 8 |
0001_0000 | 16 |
看上面表格,然后理解我给大家写的东西:
例如:
2<<3=16
为什么?
因为0000_0010,的1向左移动了三位变成了0001_0000的16,是1的下标移动了。
向右也是一样的道理。
有兴趣的小伙伴可以自己敲一敲代码,打印一下。
底层的东西虽然我也掌握的很少,不过确实很有意思。
记录一个快捷方式:Ctrl+D复制到下一行。
逻辑运算符
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
-
&&可以理解为中文的与,两个条件或多个条件必须都成立。
-
||可以为中文的或,两个或多个条件任意一个成立即可。
-
!可以理解为真假颠倒,我不喜欢你,颠倒过来就是我喜欢你,从这是假的变成这是真的。
条件运算符
扩展运算符
-
扩展运算符:+=,-=,*=,/=
a+=b;//和a=a+b;是一样的 a-=b;//和a=a-b;是一样的
扩展
int a=10;
int b=20;
System.out.println(""+a+b);
System.out.println(a+b+"");
运行之后二者有何区别?
1020
30
切记:输出打印先后顺序也会影响到结果的输出,上面就是这个例子。
第一个是String类型+10+20,所以打印是1020,计算机第一个读取到的是String类型,然后输出的也是String类型。
第二个是int类型10+int类型20+空格,所以打印出来是30,计算机并不聪明,相反它特别死板,这样有好也有坏,程序员要好好练习并掌握它,计算机也会回馈你的。
三元运算符
很简单,实际是为了偷懒而设计出来的,好好掌握就可以偷懒了,是不是很香嘞!
例如:
//X?Y:Z
//如果X==ture,则结果为y,否则为Z
String you="帅哥";
String type = you=="帅哥"?"是的":"不是";
System.out.println(type);
其实很简单,对吧!
我问你,你是不是帅哥,如果是,type就会被赋值为是的,如果不是,则赋值为不是。
相当于一条路走不通,就走另一条路。
运算符号的优先级
优先级 | 运算符 |
---|---|
1 | . () [] |
2 | +(正) -(负) ++ – ~ ! |
3 | * / % |
4 | +(加) -(减) |
5 | << >>(无符号右移) >>>(有符号右移) |
6 | < <= > >= instanceof |
7 | == != |
8 | & |
9 | | |
10 | ^ |
11 | && |
12 | || |
13 | ?: |
14 | 赋值 |
当然这些是要求了解,不明白就老老实实用括号。