JAVA运算符

139 阅读3分钟

运算符

运算符与表达式

运算符

对字面量或者变量进行操作的符号

表达式

运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式

不同运算符连接的表达式体现的是不同类型的表达式

算数运算符

符号作用
+
-
*
/
%取模、取余
  • 在代码中如果有小数参与计算,结果有可能不精确

  • 整数参与计算,结果只能是整数

  • 如果想要有小数,必须要有小数参与计算

+ 操作的三种情况

数字相加

数字进行运算的时候,数据类型不一样不能运算,需要转成一样的,才能运算

类型转换的分类

隐式转换(自动类型提升)

把一个取值范围小的数据,转成取值范围大的数据

隐式转换的两种提升规则

  1. 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
  2. byte short char 三种类型的数据再运算的时候,都会直接先提升为int,然后再进行运算
强制转换

如果把一个取值范围大的数值,赋值给取值范围小的变量

是不允许直接赋值的,如果一定要这么做需要加入强制转换

格式:

//目标数据类型 变量名 = (目标数据类型) 被强转的数据
double a = 12.3;
int b = (int)a;

字符串相加

  • 当 ” + “ 操作中出现字符串时,这个 ” + “ 是字符串连接符,而不是算数运算符了,会将前后的数据进行拼接,并产生一个新的字符串
  • 连续进行 ” + “ 操作时,从左到右逐个进行

字符相加

字符+字符字符+数字 时,会把字符通过ASCII码表查询到对应的数字再进行运算

自增自减运算符

符号作用说明
++变量的值加1
--变量的值减1

注意事项:

++和--既可以放在变量的前边,也可以放在变量的后边

单独使用:

++和--无论是放在变量的前边还是后边,单独写一行结果是一样的

赋值运算符

符号作用说明
=赋值int a = 10 将10赋值给变量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的值是否相等,成立为true,不成立为false
!=a != b 判断a和b的值是否不相等,成立为true,不成立为false
a > b 判断a是否大于b,成立为true,不成立为false
>=a >= b 判断a是否大于等于b,成立为true,不成立为false
<a < b 判断a是否小于b,成立为true,不成立为false
<=a <= b 判断a是否小于等于b,成立为true,不成立为false

注意事项:

  • 关系运算符的结果都是boolean类型,要么是true,要么是false
  • 千万不要把 “ == ” 误写成 “ = ”

逻辑运算符

符号作用说明
&逻辑与(且)并且,两边都为真,结果才是真
|逻辑或或者,两边都为假,结果才是假
逻辑异或相同为false,不同为true
!逻辑非取反

短路逻辑运算符

符号作用说明
&&短路与结果和&相同,但是有短路效果
||短路或结果和|相同,但是有短路效果

注意事项:

  • & |,无论左边true false,右边都要执行
  • && ||,如果左边能确定整个表达式的结果,右边不执行
    • &&:左边为false,右边不管是真是假,整个表达式的结果一定是false
    • ||:左边为true,右边不管是真是假,整个表达式的结果一定是true
    • 这两种情况下,右边不执行,提高了效率
  • 最常用的逻辑运算符:&&,||,!

三元运算符

格式:

关系表达式 ? 表达式2 : 表达式2;
//求两个数的较大值
int max = (a > b ? a : b);

计算规则:

  1. 首先计算关系表达式的值
  2. 如果值为true表达式1的值就是运算结果
  3. 如果值为false表达式2的值就是运算结果

运算符优先级

优先级运算符
1. () {}
2! - ++ --
3* / %
4+ -
5<< >> >>>
6< <= > >= instanceof
7== !=
8&
9
10|
11&&
12||
13? :
14= += -= *= /= %= &=