JavaSE初学---运算符什么是运算符一、算术运算符1. 基本四则运算符加减乘除模( - * / %)2. 增量运算符 - * %3.⾃增/⾃减运算符 --二、关系运算符三、逻辑运算符1.2.||3.4.短路求值四、位运算符1. 按位与 2.按位或 |3.按位取反 ~4.按位异或 ^五、移位运算1.左移 2.右移 3.⽆符号右移 六、条件运算符什么是运算符用来对变量、常量、数值进行运算、比较、逻辑判断的特殊符号。一、算术运算符1. 基本四则运算符加减乘除模( - * / %)inta200;intb4;//ab.sout快速生成System.out.println(a b);//.前面的内容就是System.out.println();中括号的内容System.out.println(ab);System.out.println(a-b);System.out.println(a*b);System.out.println(a/b);System.out.println(a%b);//取余注意(1)都是⼆元运算符使⽤时必须要有左右两个操作数(2)int / int 结果还是int类型⽽且会向下取整inta3;intb2;// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整即⼩数点之后全部舍弃掉了System.out.println(a/b);// 要得到数学中的结果可以使⽤如下⽅式doubleda*1.0/b;System.out.println(d);(3)做除法和取模时右操作数即除数不能为0(4)Java取余只看被除数正负System.out.println(10%3);//1System.out.println(10%-3);//1System.out.println(-10%3);//-1System.out.println(-10%-3);//-12. 增量运算符 - * %inta1;System.out.println(a2);//相当于 a a 2,输出3System.out.println(a-1);//相当于 a a - 1,输出2System.out.println(a*3);//相当于 a a * 3,输出6System.out.println(a/3);//相当于 a a / 3,输出2System.out.println(a%3);//相当于 a a % 2,输出2注意增量运算符在计算的时候可以不进⾏强制类型转换数据范围⼤的到数据范围⼩的)doublea10.4;intb10;ba;//不会报错bba;//此时会编译报错等号右边被提升为了double类型3.⾃增/⾃减运算符 –是给变量的值1–是给变量的值-1inta1;intb5;System.out.println(a);//后置表⽰给a的值加1此时a的值为2System.out.println(b);//前置是先给变量1然后使⽤变量中的值因此输出6//--与一样二、关系运算符关系运算符主要有六个: ! 其计算结果是 true 或者 falseinta10;intb20;// Java中 表⽰赋值要与数学中的含义区分在Java中 表⽰相等System.out.println(ab);// falseSystem.out.println(a!b);// trueSystem.out.println(ab);// trueSystem.out.println(ab);// falseSystem.out.println(ab);// trueSystem.out.println(ab);// false三、逻辑运算符逻辑运算符主要有三个: || ! 运算结果都是 boolean类型1.1语法规则表达式1 表达式2左右表达式必须是boolean类型的结果2相当于“且”3两个表达式都为真结果才是真只要有⼀个是假结果就是假inta1;intb2;System.out.println(a1b2);// 左为真 且 右为真 则结果为真System.out.println(a1b100);// 左为真 但 右为假 则结果为假System.out.println(a100b2);// 左为假 但 右为真 则结果为假System.out.println(a100b100);// 左为假 且 右为假 则结果为假2.||1语法规则表达式1 || 表达式2左右表达式必须是boolean类型的结果。2相当于或inta1;intb2;System.out.println(a1||b2);// 左为真 且 右为真 则结果为真System.out.println(a1||b100);// 左为真 但 右为假 则结果也为真System.out.println(a100||b2);// 左为假 但 右为真 则结果也为真System.out.println(a100||b100);// 左为假 且 右为假 则结果为假3.1语法规则! 表达式2相当于不是inta1;System.out.println(!(a1));//a是等于1加上结果为假4.短路求值System.out.println(102010/00);// 打印 falseSystem.out.println(1020||10/00);// 打印 true在一、1.的注意3中就提到过做除法和取模时右操作数即除数不能为0但是上⾯的代码却能正常运⾏, 说明 10 / 0 并没有真正被求值注意1对于 , 如果左侧表达式值为 false, 则表达式结果⼀定是 false, ⽆需计算右侧表达式2对于 ||, 如果左侧表达式值为 true, 则表达式结果⼀定是 true, ⽆需计算右侧表达式.3 和 | 如果表达式结果为 boolean 时, 也表⽰逻辑运算. 但与 || 相⽐, 它们不⽀持短路求值.System.out.println(102010/00);//程序抛出异常System.out.println(1020|10/00);// 程序抛出异常四、位运算符位运算符主要有四个: | ~ ^ 除 ~ 是⼀元运算符外其余都是⼆元运算符位操作表示按⼆进制位运算计算机中都是使用⼆进制来表示数据的(01构成的序列), 按位运算就是在按照⼆进制位的每⼀位依次进行计算1. 按位与 如果两个⼆进制位都是 1, 则结果为 1, 否则结果为 0(只要对应位上有0则该位下来的结果就为0inta10;intb20;//进⾏按位运算, 需要先把 10 和 20 转成⼆进制, 分别为 1010 和 10100System.out.println(ab);//02.按位或 |如果两个⼆进制位都是 0, 则结果为 0, 否则结果为 1(只要对应位上有1则该位下来的结果就为1inta10;intb20;System.out.println(a|b);//303.按位取反 ~如果该位为 0 则转为 1, 如果该位为 1 则转为 0按位取反公式~x -x - 1intc15;System.out.println(~c);//-16Java 中 int 是 32 位有符号整数15 的完整 32 位二进制00000000 00000000 00000000 00001111全部取反后11111111 11111111 11111111 11110000补码减 111111111 … 11101111按位取反得到原码00000000 … 00010000 16加上负号-164.按位异或 ^如果两个数字的⼆进制位相同, 则结果为 0, 相异则结果为 1inta10;intb20;System.out.println(a^b);//30五、移位运算移位运算符有三个: 都是⼆元运算符且都是按照⼆进制⽐特位来运算的1.左移 最左侧位不要了, 最右侧补 0inta10;System.out.println(a1);//202.右移 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)inta10;System.out.println(a1);//5inta-10;System.out.println(a1);//-53.⽆符号右移 最右侧位不要了, 最左侧补 0inta10;System.out.println(a1);//5六、条件运算符表达式1 ? 表达式2 : 表达式3当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值inta10;intb20;intmaxab?a:b;//20注意1 表达式2和表达式3的结果要是同类型的除⾮能发⽣类型隐式类型转换2表达式不能单独存在其产⽣的结果必须要被使⽤