JavaSE基础语法之运算符
目录
前言
一、分类
Java中运算符可分为:
算术运算符(+-*/) 关系运算符(<>==) 逻辑运算符 位运算符 移位运算符 条件运算符等
二、算数运算符
1.基本四则运算符:加减乘除模(+ - * / %)
注意事项:
做除法和取模时,右操作数不能为0 %不仅能对整数取模,还能对double类型取模(C的操作数只能是整数) 两侧操作数不一致时,向类型大的提升
代码示例:
public class Operator { public static void main(String[] args) { int a = 10; int b = 3; System.out.println(a % b); double c = 2.2; System.out.println(a % c); } }
运行结果:
2.增量运算符(+= -= *= /= %=)
用法与C语言完全相同,左操作数只能是变量
3.自增/自减运算符(++ --)
三、关系运算符
关系运算符有六个:==,!=,<,>,<=,>=
注意事项:
计算结果是true和false 不再能出现类似3< a < 5的写法,就是因为boolean类型和int型无法比较
四、逻辑运算符
逻辑运算符有三个:&&,||,!
注意事项:
逻辑&&和||都遵循短路求值的规则,与C相同,再强调一遍
即&&左侧的结果为false时,就不再计算右侧表达式,||左侧的结果为true时,就不再计算右侧表达式
代码示例:
public static void main(String[] args) { int a = 1; int b = 0; if((a == 0) && (a/b == 3)); if((a == 1) || (a/b == 2)); System.out.println("程序通过"); }
运行结果:
结论:我们知道,除法运算右侧表达式不能为0,否则会报错,但由于短路求值规则,程序正常编译通过
逻辑运算符的表达式都只能是布尔表达式 &和|如果表达式结果为boolean,也表示逻辑运算,但与&&和||相比,它们不支持短路求值(与表达式是boolean类型有关,了解即可)
五、位运算符
位运算符有四个:&,|,~,^,除~是一元运算符外,其他都是二元运算符
注意:
由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替 移动负数位或者移位位数过大都没有意义
六、移位运算(了解即可)
移位运算符有三个:>,>>>,都是二元运算符
1.左移<<:最左侧位丢掉,最右侧补0
注意:
向左移位时,丢失的是符号位,因此正数左移可能会变成负数
代码示例:
public static void main(String[] args) { //010000000000000000000000000000000 int n = 1073741824; System.out.println(n<<1); }
运行结果:
2.有符号右移>>:最右侧位丢掉,最左侧补符号位
3.无符号右移>>>:最右侧丢掉,最左侧补0
七、条件运算符
只有一个,即:表达式1 ? 表达式2 : 表达式3
注意:
表达式1计算结果必须是boolean类型 表达式2和表达式3的结果需要是同类型的,除非赋值给变量时能发生隐式类型转换 条件运算符的表达式不能单独存在,其产生的结果必须要使用
八、运算符的优先级
Java运算符的优先级和C相同,不必记忆,在可能存在歧义的代码中加入括号即可