算术操作符
操作符 | 作用 | 列子 |
---|---|---|
+ | 用在两个数字之间,表示两个数字相加 | int a=1+1 |
+ | 用在字符边上,表示字符串拼接符 | String = “a" +1 |
- | 两数相减 | int a=2-1 |
* | 两数相乘 | int a=2*3 |
/ | 两数相除 | int a=4/2 |
% | 两个数字取余 | int a=5%2 |
浮点数计算结果时会存在一定的精度丢失所以在进行算数运算时虚拟机会自动进行类型转换将小类型转换成大类型。byte,short,char运算时会自动转换为int进行运算
要实现浮点数的精确运算可以使用BigDecimal类进行运算;
初始化BigDecimal实例时尽量用字符串的形式
具体见:
赋值操作符
操作符 | 作用 | 例子 |
---|---|---|
= | 最基础的赋值操作符,=号右边的值,赋给=左边变量 | int a=1 ,int x = 0; |
*= | 一个变量与另一个变量相乘,并将结果存储到左边变量中 | int a =2 ;a*=5; a==10 |
/= | 一个变量与另一个变量相除,并将结果存储到左边变量中 | int a =10 ;a/=5; a==2 |
%= | 一个变量与另一个变量进行取余,并将结果存储到左边变量中 | int a =11 ;a%=5; a==1 |
+= | 一个变量与另一个变量相加,并将结果存储到左边变量中 | int a =2 ;a+=5; a==7 |
-= | 一个变量与另一个变量相减,并将结果存储到左边变量中 | int a =5 ;a-=2; a==3 |
++ | 让变量自增,出现在变量前与后 效果不完全相同 | a++,++a |
– | 让变量自减,出现在变量前与后 效果不完全相同 | b–,--b |
运算过程中会自动进行数据类型转换
a++与++a的区别:
-
a++会先使用a的值进行计算再对a进行a=a+1的操作 例如
int a=1,b; b=(a++) System.out.println(a+" "+b)//a的值是2,b的值是1
-
++a则会先对a进行a=a+1的操作 再使用a的值进行计算。例如
int a=1,b; b=(++a) System.out.println(a+" "+b)//a的值是2,b的值是2
–的规则与++类似
比较操作符
操作符 | 作用 | 例子 |
---|---|---|
instanceof | 判断对象是否属于指定类型 | stu instanceof student |
< | 比较是否小于 | 1<0 |
<= | 小于等于 | 2<=3 |
> | 大于 | 3>4 |
>= | 大于等于 | 4>=3 |
== | 比较两个操作数是否相等,相等返回true,不相等返回false | a==3 |
!= | 判断两个操作数是否不相等,不相等返回false,相等返回false | age!=18 |
比较操作符最后返回的结果 都是boolean类型的 true|false
移位操作符
操作符 | 作用 | 例子 |
---|---|---|
>> | 算术右移位运算 带符号位的右移运算 | 8>>1 |
<< | 左移位运算 | 8<<1 |
>>> | 逻辑右移位运算 不带符号的右移运算 | 8>>>1 |
如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数进行取余
位运算符
操作符 | 作用 | 例子 |
---|---|---|
& | 与运算 | 3&5=1 //0011&0101=0001 |
| | 或运算 | 3|5=7 // 0011|0101 = 0111 |
^ | 异或运算(模二加) | 3^5=6 //0011^0101 = 0110 |
~ | 取反运算 | 8位长的 a a=1 ~a =-2 // 0000 0001 ~ 1111 1110 |
a^=b;
b^=a;
a^=b;
可以用异或运算来交换变量
用异或运算交换变量的方法 知道即可 应付面试 不要在实践中使用
理由:
[]: https://blog.csdn.net/Solstice/article/details/5166912 " 参考大佬博客"
逻辑运算符
&& :短路与
当前面的表达式结果为false时,第二个表达式将不再参与运算。
||:短路或
当前面的表达式结果为ture时,后面的表达式将不再参与运算。
&:效果同&&但两个表达式都会运算
|:效果同||但两个表达式都会运算
条件操作符
也叫三目运算符
语法
表达式?结果1:结果2
条件操作符的执行逻辑是 先判断表达式的值,如果表达式的值是true,则返回结果1;如果表达式的值是false,则返回结果2.
例子:
int x =10;
int y =5;
int z;
z = x>y?y:x;//z==5