不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础(Java基本语法)
运算符
-
算术运算符
常见的+、-、×、/ 以及 % 等。
注意:
正数取模负数的结果和正数取模这个负数的绝对值的结果完全一样。
举例:2 % (-5)= 2; 5 % (-2)= 1
负数取模正数的结果为这个负数的绝对值取模这个正数后加上一个负号。
举例:(-2)% 5 = -2;(-5)% 2 = -1
结论:只和被模数符号有关。
对于“ / ”,整数除,只保留整数部分,舍弃小数部分;小数除,比如12 / (5.0)= 2.4 或者 12.0 % 5 = 2.4 或者 (double)12 / 5 = 2.4。
对于“++”,++a是先自加后赋值,a++是先赋值后自加;同理得“- -”。
“++”不会改变数据本身的类型
short s1 = 10;
s1 = s1 + 1;// 编译错误
s1 = (short) (s1 + 1);//正确
或者 s1++;同样正确
关于字节型数据,127 + 1 = -128,-128 - 1 = 127;
详见:https://my.oschina.net/u/3560874/blog/995697
-
赋值运算符
| 运算符 | 运算 |
| = | 赋值 |
| += | 加等于 |
| -= | 减等于 |
| *= | 乘等于 |
| /= | 除等于 |
| %= | 模等于 |
支持通过一条赋值语句对多个变量进行赋值。
int x, y, z; x = y = z = 5; //正确 int x = y = z =5; //错误
除了“=”,其它的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算 x + 3,再将运算结果赋值给变量 x 。
与“++”一样,不会改变数据本身的类型。
-
比较运算符
|
运算符 |
运算 | 范例 | 结果 |
|
== |
相等于 | 4==3 | false |
| != | 不等于 | 4!=3 | true |
| < | 小于 | 4<3 | false |
| > | 大于 | 4>3 | true |
| <= | 小于等于 | 4<=3 | false |
| >= | 大于等于 | 4>=3 | true |
| instanceof | 检查是否是类的对象 | "hello" instanceof String | true |
-
逻辑运算符
& 逻辑与 | 逻辑或 !逻辑非
&&短路与 || 短路或 ^逻辑异或

逻辑与 和 短路与 的区别:
单 & 时, 左边无论真假,右边都要进行运算。
双 & 时, 如果左边为真,右边参与运算,如果左边为假,右边不参与运算(也就是短路的意思)。
同理“|” 和 “||”,|| 表示当左边为真,右边不参与运算。
异或(^)和 或(|)的区别,异或追求的是 异 ,当左右两边不相同时才为 true。
-
位运算符
| 运算符 | 运算 | 范例 |
| << | 左移 | 3<<2 = 12 |
| >> | 右移 | 3>>2 = 1 |
| >>> | 无符号右移 | 3>>2 = 1 |
| & | 与运算 | 6 & 3 = 2 |
| | | 或运算 | 6 | 3 = 7 |
| ^ | 异或运算 | 6 ^ 3 = 5 |
| ~ | 取反运算 | ~6 = -7 |
无符号右移:空缺位都用 0 来补。
取反,互为取反。~(-7)= 6。
-
三元运算符
格式:(条件表达式)?表达式1:表达式2;
当条件表达式为true,运算后的结果是表达式1,当条件表达式为false,运算后的结果是表达式2。
表达式1和表达式2为同种类型(int max = (a > b)? a : b)。
浙公网安备 33010602011771号