目录
对操作数进行操作的符号,不同运算符操作的含义不同。
(1)都是二元运算符,使用时必须要有左右两个操作数
(2)int/int 结果还是int类型,而且会向下取整
(3)做除法和取模时,右操作数不能为0,会算术异常报错
System.out.println(1/0) ;//error System.out.println(1%0) ;//error
(4)%不仅可以对整型取模,也可以对double类型取模
System.out.println(12.5%2.0) ;//2.5
(5)当两侧操作数不一样是,会向类型大的提升
System.out.println(1+1.1) ;//会提升为double类型
该运算符可以帮我们进行类型转换,将操作的结果赋值给左操作数
int a=10; a=(int)(a+1.1);//a+1.1为double,但是a为int类型,需要强制转换为int a+=1.1;//增量运算符可以自动转换为类型大的,不需要转换
(1)++是给变量的值+1,--是给变量-1
(2)如果单独使用,【前置++】和【后置++】没有任何区别
(3)如果混合使用,【前置++】先+1,然后使用变量+1之后的值;【后置++】先使用原来变量的值,表达式结束时给变量+1
int a=1; a++;//a=2 System.out.println(a++);//后置++,先使用,输出2,即a=2,然后+1 System.out.println(a);//a=3
(1)关系运算符有6个,==,!=,<,>,<= ,>=
(2)在Java当中,=表示赋值,==表示相等
(3)当需要多次判断是,不要连着写,比如:3
逻辑运算符有三个:&&,||,!,运算结构都是boolean类型 (1)逻辑与&&:表达式1&&表达式2,左右表达式必须是boolean类型 两个表达式都是真,结果才为真,只要一个为假,结果就是假 (2)逻辑或||:表达式1&&表达式2,左右表达式必须是boolean类型 左右表达式至少有一个为真,则结果为真 (3)逻辑非!:!表达式 真变假,假变真 (4)短路求值 数据操作的最小单位是比特,最小的存储单位是字节 位操作表示按二进制位运算,主要有4个:& ,|,~,^ (1)按位与&:如果两个二进制位都是1,则结果也为1,否则为0 (2)按位或|:两个二进制位都是0,则结果为0,否则结果为1 (3)按位取反~:0转1,1转0 (4)按位异或^:两个数字的二进制位相同为0,相异为1 a^a=0 a^0=a (1)左移<<:最左侧位不要了,最右侧补0【左移一位,相当于原数字*2】 向左移位时,丢弃的是符号位,因此正数左移可能会变成负数 (2)右移>>:最右侧位不要了,最左侧补符号位(正数补0,负数补1)【右移一位,相当于原数字/2】 (3)无符号右移>>>:最右侧位不要了,最左侧补0 (4)由于计算机计算移位效率高于计算乘除,当某个代码正好乘除2的N次方的时候可以用移位运算符代替 条件运算符(也称三目运算符)只有一个:表达式1?表达式2:表达式3 当表达式1的值为true时,整个表达式的值为表达式2的值 当表达式1的值为false时,整个表达式的值为表达式3的值 (1)运算符之间是有优先级的,具体的规则我们不必记忆,在可能存在歧义的地方加括号即可 (2)要注意的是:&&优先级高于||四:逻辑运算符(重点)
System.out.println(1>2&&1/0==0);//打印false
//对于&&:表达式1为假,就不会执行表达式2了
System.out.println(1<2&&1/0==0);//打印true
//对于||:表达式1为真,就不会执行表达式2了
//&和|如果表达式结果为boolean时,也表示逻辑运算,但与&& ||相比时,他们不支持短路求值
五:位运算符
int a=0xf;//表示16进制 ,f为十进制的15
System.out.printf("%x\n",a);
System.out.printf("%x\n",~a);//用16进制打印
结果:
f
fffffff0
六:移位运算符
七:条件运算符
八:运算符的优先级
System.out.println(10>3||10<3&&10<3);//true
//加括号
System.out.println((10>3)||(10>3&&10<3));