文章目录
- 《On Java》——第四章 运算符
- 赋值
- 算数运算符
- 自增和自减
- 关系运算符
- 逻辑运算符
- 字面值常量
- 下划线
- 位运算符
- 移位运算符
- 三元运算符
- 字符串运算符
- 类型转换
- 隐式转换
- 强制转换
- 截断和舍入
《On Java》——第四章 运算符
赋值
用 =
赋值,将 =
右边的值赋给左边的变量。
给基本类型赋值:直接赋值。
给对象复制:实际上是操作它的引用。
算数运算符
+
, -
, *
, /
分别是加、减、乘、除
自增和自减
a++
:在调用完这一个 a 之后,a 的值 +1 ( a = a + 1 )
++a
:在调用前,+1。
-
号同理
关系运算符
>
, <
, >=
, <=
, ==
, !=
分别是大于、小于、大于等于、小于等于、等于、不等于。
返回一个布尔值。
逻辑运算符
&&
, !|
, !
与、或、非。
注意:这里的与、或是短路与、短路或。
意为:如果逻辑运算符左边的式子能决定这一个逻辑运算符的结果,那就直接返回结果,不去处理逻辑运算符右边的数据。
例如:
int a = 5;
int b = 10;
a + (b++) > 20 && b++ > 2;
// a = 5 , b = 11
字面值常量
当一个变量的类型不明确时,要辅以字面常量来帮助编译器识别。
例如:
double n1 = 239.54L; //double 型后缀
long n2 = 387L; //long 型后缀,L 记得大写,小写的 l 容易与数字混淆
float n3 = 269.3F; //float 型后缀
不同进制的数字会加前导的字面常量表示。
十六进制: 前导 0x
或 0X
。
八进制:前导 0
。
二进制:前导 0b
或 0B
。
下划线
可以在数字中加入下划线 _
,使结果更清晰,并且不会影响数字的值。
注意点:
- 只能用单个下划线。
- 开头结尾不能用下划线。
-
F
、D
、L
前后不能用下划线。 - 二进制前导
b
和十六进制x
前后不能用下划线。
位运算符
与、或、非,不详细展开了。
移位运算符
<<
,左移运算符,能将其左边的运算对象向左移动右侧指定的位数(低位补0)。
>>
,右移运算符,能将其左边的运算对象向右移动右侧指定的位数(低位补0)。右移运算符有正负值,值为正,则在高位插入0,为负则插入1。
>>>
,不分正负的右移运算符。与 >>
基本相同,但是不分正负。
三元运算符
表达式:
布尔表达式 ? 值 1 : 值 2
若表达式计算为 true,则返回结果 值 1 ;如果表达式的计算为 false,则返回结果 值 2。
字符串运算符
+
注意,+
会把与字符串相加的数据转化为字符串,再进行拼接。
类型转换
隐式转换
在必要时,java 会自动将一种数据类型自动转换为另一种。
例如:
long a = 200;
int b = 20;
long c = a + b ; //这里 b 会被提升为 long 型,再进行计算
强制转换
将所需类型放在值左侧的符号内。
例如:
long i = 200;
int n = (int)i; //将 i 强制转换为 int 型,并赋值给 n。
截断和舍入
从浮点型数据转换为整型数据,小数点后的数据会被直接舍弃。