数字常量表示法
从java SE7开始,撰写整数或浮点数常量时可以使用下划线更清楚的表示某些数字。
int number = 1234_5678; double number2 = 3.14_159_26
要以二进制方式表示某个值,可以用0b作为开头。
int mask = 0b10101010;
结合下划线: int mask = 0b1010_1010;
条件运算符
(Conditional Operator),三目条件运算。使用方式:
条件式 ? 成立返回值 : 失败返回值
条件运算符返回值根据条件式结果而定,如果条件式结果为true,返回“:”前的值;若条件式结果为false,返回“:”后的值。例如,若int声明,储存使用者输入的学生成绩。
System.out.printf("该生是否及格?%c%n",score>=60?'是':'否');
输出结果:
该生是否及格?是
位运算
1.按位与运算:
&是双目运算符,对两个整形数据a、b按位进行运算,运算结果是一个整形数据c。运算法则:
如果a、b两个数据对应位都是1,则c的该位是1,否则是0。如果b的精度高于a的精度,c的精度与b的精度相同。
a: 00000111
& b: 10101011
c: 00000011
2.按位或运算:
|是二目运算符。运算法则:如果a、b两个数据对应位都是0,则c的改为是0,否则是1。
0|0 = 0
0|1 = 1
1|0 = 1
1|1 = 1
3.按位非运算:
~是二目运算符。运算法则:如果a对应位是0,则c的该位是1,否则是0。
4.按位异或运算:
^是二目运算符。运算法则:如果a、b两个数据对应位相同,则c的该位是0,否则是1。
0^0 = 0
0^1 = 1
1^0 = 1
1^1 = 0
有异或运算法则可知:a ^ a = 0, a ^ 0 = a,因此如果c = a ^ b , 那么a=c ^ b,所以^ 的逆运算是^,即
a ^ b ^ b等于a
运算符的优先级和结合性
优先级 | 描述 | 运算符 | 结合性 |
---|---|---|---|
1 | 分隔符 | [ ] ( ) . , ; | |
2 | 对象归类,自增自减运算,逻辑非 | instanceof ++ - - ! | 右到左 |
3 | 算数乘除运算 | * / % | 左到右 |
4 | 算数加减运算 | + - | 左到右 |
5 | 移位运算 | >> << >>> | 左到右 |
6 | 大小关系运算 | < <= > >=(小于,小于等于,大于,大于等于) | 左到右 |
7 | 相等关系运算 | == !=(等于,不等于) | 左到右 |
8 | 按位与运算 | & | 左到右 |
9 | 按位异或运算 | ^ | 左到右 |
10 | 按位或 | | | 左到右 |
11 | 逻辑与运算 | && | 左到右 |
12 | 逻辑或运算 | || | 左到右 |
13 | 三目运算符 | ? : | 左到右 |
14 | 赋值运算 | = | 右到左 |
类型转换
如果操作数都是不大于int的整数,则自动的全部提升int类型进行运算。例如:
short a = 1;
short b = 2;
short c = a+b;
编译会出错,虽然a、b都是short类型,java在运算整数时,如果全部的整数都不大于int,那么一律在int的空间中运算,int的运算结果要放到short中,会提醒精度丢失问题。
short c = (short) a + b
进行强制转换虽然可通过编译,但执行时可能会出现的精度丢失的问题。
递增递减运算
++或- -写在变量前:表示先将变量值加或减1,然后在返回变量值;
++或- -写在变量后:先返回变量值,在对变量加或减1。例如:
int i = 0;
int number = 0;
number = ++i; //i = i + 1;number = i;
System.out.println(number);
number = --i; //i = i - 1;number = i;
System.out.println(number);
输出结果分别是:1 、0.
int i = 0;
int number = 0;
number = i++; //number = i; i = i + 1;
System.out.println(number);
number = i--; //number = i; i = i - 1;
System.out.println(number);
System.out.println("i = " + i);
输出结果分别是:0、1、i = 0.
指定运算
指定运算 | 范例 | 结果 |
---|---|---|
+ = | a + = b | a = a + b |
- = | a - = b | a = a - b |
* = | a * = b | a = a * b |
/ = | a / = b | a = a / b |
% = | a % = b | a = a % b |
& = | a & = b | a = a & b |
| = | a | =b | a = a | b |
^ = | a ^ = b | a = a ^ b |
<< = | a << = b | a = a << b |
>> = | a >> = b | a = a >> b |