运算符
算术运算
运 算 符 | 名 称 | 说 明 | 例 子 |
---|---|---|---|
+= | 加赋值 | a += b、a += b+3 | |
-= | 减赋值 | a -= b | |
*= | 乘赋值 | a *= b | |
/= | 除赋值 | a /= b | |
%= | 取余赋值 | a %= b | |
- | 取反符号 | 取反运算 | b=-a |
++ | 自加一 | 先取值再加一,或先加一再取值 | a++ 或 ++a |
– | 自减一 | 先取值再减一,或先减一再取值 | a-- 或 --a |
+ | 加 | 求 a 加 b 的和,还可用于 String 类型,进行字符串连接操作 | a + b |
- | 减 | 求 a 减 b 的差 | a - b |
* | 乘 | 求 a 乘以 b 的积 | a * b |
/ | 除 | 求 a 除以 b 的商 | a / b |
% | 取余 | 求 a 除以 b 的余数 | a % b |
注意:
i++:先将i的值加上1再赋给i本身
int i = 1 ; //i=1
int j=i++; //i=2,j=1
++i:先将i的值加1赋值给变量i后再使用
int i=1l //i=1
int j=++i; //i=2,j=2;
i++先做别的事,再自己加1,++i先自己加1,再做别的事情
自增/自减只能作用于变量,不允许对常量、表达式或其他类型的变量进行操作。常见的错误是试图将自增或自减运算符用于非简单变量表达式中。
自增/自减运算可以用于整数类型 byte、short、int、long,浮点类型 float、double,以及字符串类型 char。
在 Java 1.5 以上版本中,自增/自减运算可以用于基本类型对应的包装器类 Byte、Short、Integer、Long、Float、Double 和 Character。
自增/自减运算结果的类型与被运算的变量类型相同
整数运算
两个操作数有一个是long型,则结果为long
没有long型,就为int,不管是short还是byte
浮点运算
如果两个操作数有一个为double,结果为double
只有两个都是float,结果才是float
取模运算
%其操作数是整数,结果是”余数“,'余数"符号和左边的操作数保持一致
赋值及其拓展运算
a+=b 等效于 a=a+b
运 算 符 | 名 称 | 说 明 | 例 子 |
---|---|---|---|
+= | 加赋值 | a += b、a += b+3 | |
-= | 减赋值 | a -= b | |
*= | 乘赋值 | a *= b | |
/= | 除赋值 | a /= b | |
%= | 取余赋值 | a %= b |
关系运算符
> | 大于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值大于后面变量的值, 则返回 true。 | 2>3 | false |
---|---|---|---|---|
>= | 大于或等于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值大于等于后面变量的值, 则返回 true。 | 4>=2 | true |
< | 小于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值小于后面变量的值,则返回 true。 | 2<3 | true |
<= | 小于或等于运算符 | 只支持左右两边操作数是数值类型。如果前面变量的值小于等于后面变量的值, 则返回 true。 | 4<=2 | false |
== | 相等运算符 | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值相等,也都将返回 true。如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true.Java 也支持两个 boolean 类型的值进行比较。 | true==false | true true true false |
!= | 不相等运算符 | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值不相等也都将返回 true。如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true。 | 4!=2 | true |
注意:
1.关系运算符是用来进行比较运算。关系运算的结果是布尔值:true/false;
2.=是赋值运算符,判断相等的运算符是==
3,!=是所有数据类型都可以使用的
4.符号>,<=是仅对于数值类型(byte/short/int/long,float/double以及char)
5.基本类型的变量、值不能和引用类型的变量、值使用 == 进行比较;boolean 类型的变量、值不能与其他任意类型的变量、值使用 == 进行比较;如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用 == 进行比较
6.== 和 != 可以应用于基本数据类型和引用类型。当用于引用类型比较时,比较的是两个引用是否指向同一个对象,但当时实际开发过程多数情况下,只是比较对象的内容是否相当,不需要比较是否为同一个对象
逻辑运算符
&&: 短路与 左右都true,结果为true,其他为false
|| :短路或 左右有一个true,结果就为true
!: 非 取当前条件的相反
| :或 左右有一个true,结果就为true
& : 与 左右都true,结果为true,其他为false
注意:
短路与和短路或的方式。从左到右进行计算,只能通过运算符左边的操作数就能确定逻辑表达式的值,提高效率,
或和与是挨个判断,短路与和短路或是只要第一个不行直接结束。
位运算符*
& 是相乘 | 有1为1,都没1得0 ^取相同为1,不同为0 ~是取反,前面学习里有详细介绍
字符串运算符
+的两侧有一侧是String类型的,系统就自动将操作数转换成String,然后进行连接
条件运算符 (? :)
int score <60 ? "不及格": "及格"
运算符的优先级
括号-> 一元运算符—> 自增/自减-> 乘除-> 加减-> 位右/左移-> 大于小于-> 等于/不等于-> &-> ^->|-> && -> ||->>?:->赋值运算/拓展运算