【javaSE】运算符
目录一.算术运算符1.1 基本四则运算符加减乘除模 - * %1.2 增量运算符 - * %1.3 自增/自减运算符 --二.关系运算符三.逻辑运算符3.1 逻辑与 3.2 逻辑或 ||3.3 逻辑非 3.4 短路求值四. 位计算符4.1 按位与 4.2 按位或 |4.3 按位取反 ~4.4 按位异或 ^五.移位运算了解5.1 左移 5.2 右移 5.3 无符号右移 六.条件运算符七.运算符的优先级一.算术运算符1.1 基本四则运算符加减乘除模 - * %int a 20; int b 10; System.out.println(a b); // 30 System.out.println(a - b); // 10 System.out.println(a * b); // 200 System.out.println(a / b); // 2 System.out.println(a % b); // 0 ---模运算相当于数学中除法的余数注意都是二元运算符使用时必须要有左右两个操作数int/int 结果还是int类型而且会向下取整小数点以后的数字全部被舍弃做除法和取模时右操作数不能为0否则编译错误%不仅可以对整形去模也可以对double类型取模但是没有意义一般都是对整形取模注意两侧操作数类型不一致时。向类型大的提升System.out.println(10.2); // 的左侧是int右侧是double在加之前int被提升为double 故输出1.21.2 增量运算符 - * %该种运算符操作完成后会将操作的结果赋值给左操作数。注意增量运算符在计算时可以不进行强制类型转化double a 10.4; int b 10; b a; // 不会报错 b b a; // 此时会编译报错等号右边被提升为了double类型1.3 自增/自减运算符 --是给变量1--是给变量-1int a 1; a; // 后置 表示给a的值加1此时a的值为2 System.out.println(a); // 注意后置是先使用变量原来值表示式结束时给变量1因此输出2 System.out.println(a); // 输出3 a; // 前置 表示给a的值加1 System.out.println(a); // 注意前置是先给变量1然后使用变量中的值因此输出5 System.out.println(a); // 输出 // --操作符给操作-1与含义类似注意如果单独使用【前置】和【后置】没有任何区别如果混合使用【前置】先1然后使⽤变量1之后的值【后置】先使⽤变量原来的值 表达式结束时给变量1二.关系运算符关系运算符主要由六个 ! ,其计算结果是true或者falseint a 10; int b 20; // 注意在Java中 表示赋值要与数学中的含义区分 // 在Java中 表示相等 System.out.println(a b); // false System.out.println(a ! b); // true System.out.println(a b); // true System.out.println(a b); // false System.out.println(a b); // true System.out.println(a b); // false注意当多次判断时不能连写比如3a5java程序与数学是有区别的三.逻辑运算符逻辑运算符主要分为三个 || 3.1 逻辑与 语法规则表达式1表达式2 左右表达式必须是boolean类型的的结果表达式 1表达式 2结果真真真真假假假真假假假假3.2 逻辑或 ||语法规则表达式1 || 表达式2 左右表达式必须是boolean类型的的结果表达式 1表达式 2结果真真真真假真假真真假假假3.3 逻辑非 语法规则表达式 表达式必须是boolean类型的的结果真变假 假变真表达式结果真假假真3.4 短路求值与||遵循短路求值的规则System.out.println(10 20 10 / 0 0);//打印false System.out.println(10 20 || 10 / 0 0);//打印true我们都知道,计算10 / 0 会导致程序抛出异常.但是上面的代码却能正常运行,说明10 / 0 并没 有真正被求值.注意对于,如果左侧表达式值为false,则表达式结果⼀定是false,⽆需计算右侧表达式.对于||,如果左侧表达式值为true,则表达式结果⼀定是true,⽆需计算右侧表达式.和 | 如果表达式结果为boolean时,也表示逻辑运算.但与 ||相⽐,它们不⽀持短路求值.System.out.println(10 20 10 / 0 0); // 程序抛出异常 System.out.println(10 20 | 10 / 0 0); // 程序抛出异常四. 位计算符位计算符主要分为四个 | ~ ^ ,除了 ~ 是一元运算符外其余都是二元运算符。注意位操作表示按二进制位运算4.1 按位与 如果两个二进制位都是1则结果位1否则结果为0同为1则为1否则为0int a 10; int b 20; System.out.println(a b);4.2 按位或 ||如果两个二进制位都是0,则结果为0,否则结果为1.同为0则为0否则为1int a 10; int b 20; System.out.println(a | b);4.3 按位取反 ~~ 如果该位为0则转为1如果该为1则转为0int a 0xf; System.out.printf(%x\n, ~a);4.4 按位异或 ^^ :如两个数的二进制位相同则结果为0不同则为1五.移位运算了解位移运算符有三个 ,都是二元运算符且都是按照二进制比特位运算的5.1 左移 最左侧位不要了最右侧补0注意向左移位时丢弃的是符号位因此正数左移可能会变成负数。5.2 右移 最右侧位不要了最左侧补符号位正数补0负数补15.3 无符号右移 最右侧位不要了最左侧位补0六.条件运算符条件运算符只有一个表达式1 表达式2 表达式3当表达式1的值为true时整个表达式的值为表达式2的值当表达式1的值为false时整个表达式的值为表达式3的值注意表达式2和表达式3的结果要是同种类型除非能发生隐式类型转换表达式不能单独存在其产生的结果必须要利用七.运算符的优先级在一条表达式时各个运算符可以混合起来进行运算但是运算符的优先级不同我们只需要注意在可能产生歧义的代码中加上括号即可// 求a和b的平均值 int a 10; int b 20; int c a ((b - a) 1); System.out.println(c);