+,-,*,/,%,++,--
单独使用:
放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。
=,+=,-=
+=,-=这类的运算符,隐含了一个强制类型的转换。
==,!=,>,>=,<,<=
特点:无论你的操作是简单还是复杂,结果是boolean类型。
&,|,^,!
特点:逻辑运算符一般用于连接boolean类型的表达式或者值。
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
特点:偶数个不改变本身。
最终结果一样
&&遇到false就不向右继续了,
&,|,^,~
注意:要做位运算,系统是将数据转换为二进制进行运算的。
这里以3和4为例:
System.out.println(3 & 4);
System.out.println(3 | 4);
System.out.println(3 ^ 4);
System.out.println(~3);
&位与运算:有0则0。 00000000 00000000 00000000 00000011 &00000000 00000000 00000000 00000100 ----------------------------------- 00000000 00000000 00000000 00000000 结果是:0 |位或运算:有1则1。 00000000 00000000 00000000 00000011 |00000000 00000000 00000000 00000100 ----------------------------------- 00000000 00000000 00000000 00000111 结果是:7 ^位异或运算:相同则0,不同则1。 00000000 00000000 00000000 00000011 &00000000 00000000 00000000 00000100 ----------------------------------- 00000000 00000000 00000000 00000111 结果是:7 ~按位取反运算符:0变1,1变0 00000000 00000000 00000000 00000011 ~11111111 11111111 11111111 11111100 (补码) 补码:11111111 11111111 11111111 11111100 反码:11111111 11111111 11111111 11111011 原码:10000000 00000000 00000000 00000100 结果是:-4
^的特点:一个数据对另一个数据位异或两次,该数本身不变。
比如: a^a^b 的结果还是b
<<:左移 左边最高位丢弃,右边补齐0
>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
>>>:无符号右移 无论最高位是0还是1,左边补齐0
一般源码中用的比较多,例如
计算:2 * 8
2 << 3
class OperatorDemo3 { public static void main(String[] args) { //<< 把<<左边的数据乘以2的移动次幂 System.out.println(3 << 3); //3*2^3 = 3*8 = 24; //>> 把>>左边的数据除以2的移动次幂 System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6 System.out.println(24 >>> 2); System.out.println(-24 >> 2); System.out.println(-24 >>> 2); } } /* 计算出3的二进制:11 00000000 00000000 00000000 00000011 (000)00000 00000000 00000000 00000011000 >>的移动: 计算出24的二进制:11000 原码:10000000 00000000 00000000 00011000 反码:11111111 11111111 11111111 11100111 补码:11111111 11111111 11111111 11101000 11111111 11111111 11111111 11101000 1111111111 11111111 11111111 111010(00) 补码 补码:1111111111 11111111 11111111 111010 反码:1111111111 11111111 11111111 111001 原码:1000000000 00000000 00000000 000110 结果:-6 >>>的移动: 计算出24的二进制:11000 原码:10000000 00000000 00000000 00011000 反码:11111111 11111111 11111111 11100111 补码:11111111 11111111 11111111 11101000 11111111 11111111 11111111 11101000 0011111111 11111111 11111111 111010(00) 结果: */
格式:比较表达式?表达式1:表达式2;
比较表达式:结果是一个boolean类型。
执行流程:
根据比较表达式的计算返回一个true或者false。
如果是true,就把表达式1作为结果。
如果是false,就把表达式2作为结果。
例子:
int a1 = 5; int b1 = 6; System.out.println((a1>b1)? a1:b1);
//当然也可以进行嵌套操作
import java.util.Scanner; public class scanner { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请你输入一个数据:"); int x = sc.nextInt(); System.out.println("你输入的数字是:"+x); } }
原文:https://www.cnblogs.com/taozizainali/p/10587034.html