旅游网站设计与分析,国内免费域名,免费建立国外网站,云南高端网站制作价格1. 概念
运算符是一种用于执行特定操作的符号或关键字。在编程中#xff0c;运算符用于对变量、常量和表达式进行操作#xff0c;以产生一个结果。 作为一门计算机语言#xff0c; Java 也提供了一套丰富的运算符来操纵变量。 Java 中运算符可分为以下#xff1a;算术运算…1. 概念
运算符是一种用于执行特定操作的符号或关键字。在编程中运算符用于对变量、常量和表达式进行操作以产生一个结果。 作为一门计算机语言 Java 也提供了一套丰富的运算符来操纵变量。 Java 中运算符可分为以下算术运算符 、关系运算符 、逻辑运算符、位运算符、移位运算符以及条件运算符等。 2. 算术运算符、-、*、/ 2.1 基本四则运算符加减乘除模( - * / %)
int a 2;
int b 1;
System.out.println(a b); // 3
System.out.println(a - b); // 1
System.out.println(a * b); // 2
System.out.println(a / b); // 2
System.out.println(a % b); // 0 ---模运算相当于数学中除法的余数
注意
都是二元运算符使用时必须要有左右两个操作数 int / int 结果还是int类型而且会向下取整 int a 3;int b 2;
// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整即小数点之后全部舍弃掉了System.out.println(a / b);
// 如果要得到数学中的结果可以使用如下方式double d a*1.0 / b;System.out.println(d);} 做除法和取模时右操作数不能为0 % 不仅可以对整型取模也可以对 double 类型取模但是没有意义一般都是对整型取模的 两侧操作数类型不一致时向类型大的提升 System.out.println(10.2);// 的左侧是int右侧是double在加之前int被提升为double// 故输出1.2 2.2 增量运算符 - * % 该种类型运算符操作完成后会将操纵的结果赋值给左操作数。 int a 1;a 2; // 相当于 a a 2System.out.println(a); // 输出3a - 1; // 相当于 a a - 1System.out.println(a); // 输出2a * 3; // 相当于 a a * 3System.out.println(a); // 输出6a / 3; // 相当于 a a / 3System.out.println(a); // 输出2a % 3; // 相当于 a a % 2System.out.println(a); // 输出2 注意只有变量才能使用该运算符常量不能使用。 2.3 自增/自减运算符 -- 是给变量的值1--是给变量的值-1。 int a 1;a; // 后置 System.out.println(a); // 注意后置是先使用变量原来值表示式结束时给变量1因此输出2System.out.println(a); // 输出3a; // 前置 System.out.println(a); // 注意前置是先给变量1然后使用变量中的值因此输出5System.out.println(a); // 输出5// --操作符给操作-1与含义类似 注意 如果单独使用【前置】和【后置】没有任何区别 如果混合使用【前置】先1然后使用变量1之后的值【后置】先使用变量原来的值表达式结束时给变量1 只有变量才能使用自增/自减运算符常量不能使用因为常量不允许被修改 3. 关系运算符 关系运算符主要有六个 : ! 其计算结果是 true 或者 false 。 int a 10;int b 20;System.out.println(a b); // falseSystem.out.println(a ! b); // trueSystem.out.println(a b); // trueSystem.out.println(a b); // falseSystem.out.println(a b); // trueSystem.out.println(a b); // false 注意
在Java中 表示赋值要与数学中的含义区分 在Java中 表示相等 当需要多次判断时不能连着写比如3 a 5Java程序与数学中是有区别的 4. 逻辑运算符 逻辑运算符主要有三个 : 、 || 、 ! 运算结果都是 boolean 类型。 4.1 逻辑与 语法规则表达式 1 表达式 2 左右表达式必须是 boolean 类型的结果。 两个表达式都为真结果才是真只要有一个是假结果就是假。 表格表示如下 表达式1 表达式2 结果 真 真 真 真 假 假 假 真 假 假 假 假 代码表示如下 int a 1;int b 2;System.out.println(a 1 b 2); // 左为真 且 右为真 则结果为真System.out.println(a 1 b 10); // 左为真 但 右为假 则结果为假System.out.println(a 10 b 2); // 左为假 但 右为真 则结果为假System.out.println(a 10 b 10); // 左为假 且 右为假 则结果为假运行结果如下 4.2 逻辑或|| 语法规则表达式 1 || 表达式 2 左右表达式必须是 boolean 类型的结果。 两个表达式都为假结果才是假只要有一个是真结果就是真。
表格表示如下 表达式1 表达式2 结果 真 真 真 真 假 真 假 真 真 假 假 假
代码表示如下 int a 1;int b 2;System.out.println(a 1 || b 2); // 左为真 且 右为真 则结果为真System.out.println(a 1 || b 10); // 左为真 但 右为假 则结果为真System.out.println(a 10 || b 2); // 左为假 但 右为真 则结果为真System.out.println(a 10 || b 10); // 左为假 且 右为假 则结果为假运行结果如下 4.3 逻辑非 语法规则 ! 表达式 真变假假变真。 表格表示如下 表达式2 结果 真 假 假 真
代码表达如下: int a 1;System.out.println(!(a 1)); // a 1 为true取个非就是falseSystem.out.println(!(a ! 1)); // a ! 1 为false取个非就是true运行结果如下 4.4 短路求值 和 || 遵守短路求值的规则 对于 , 如果 左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式 . 对于 ||, 如果 左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式 . 代码表示如下 System.out.println(10 20 10 / 0 0); // 打印 falseSystem.out.println(10 20 || 10 / 0 0); // 打印 true运行结果如下 5. 位运算符 位运算符主要有四个 : 、| 、~ 、^ 除 ~ 是一元运算符外其余都是二元运算符。 位操作表示 按二进制位运算 . 计算机中都是使用二进制来表示数据的 (01 构成的序列 ), 按位运算就是在按照二进制位的每一位依次进行计算. 5.1 按位与 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0. 代码如下 int a 3;int b 5;System.out.println(a b);运行结果如下 5.2 按位或 | 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1. 代码如下 int a 3;int b 5;System.out.println(a | b);运行结果如下 注意 : 当 和 | 的操作数为整数 (int, short, long, byte) 的时候 , 表示按位运算 , 当操作数为 boolean 的时候 , 表示逻辑运算. 5.3 按位异或 ^ 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1. 代码如下 int a 3;int b 5;System.out.println(a ^ b);运行结果如下 注意如果两个数相同则异或的结果为 0。 5.4 按位取反 ~ 如果该位为 0 则转为 1, 如果该位为 1 则转为 0 代码如下 int a 0xf;System.out.printf(%x\n, ~a);运行结果如下 6. 移位运算符 移位运算符有三个 : 、 、 都是二元运算符且都是按照二进制比特位来运算的。 6.1 左移运算符
最左侧位舍弃, 最右侧补 0.
代码如下 int a 5;System.out.println(51);运行结果如下 注意向左移位时丢弃的是符号位因此正数左移可能会编程负数。 6.2 右移运算符 最右侧位舍弃, 最左侧补符号位(正数补0, 负数补1)。 代码如下 int a 5;System.out.println(51);运行结果如下; 6.3 无符号右移运算符 最右侧位舍弃, 最左侧补 0. 代码如下 int a 5;System.out.println(51);运行结果如下 注意 : 1. 左移 1 位 , 相当于原数字 * 2. 左移 N 位 , 相当于原数字 * 2 的 N 次方 . 2. 右移 1 位 , 相当于原数字 / 2. 右移 N 位 , 相当于原数字 / 2 的 N 次方 . 3. 由于计算机计算移位效率高于计算乘除 , 当某个代码正好乘除 2 的 N 次方的时候可以用移位运算代替 . 4. 移动负数位或者移位位数过大都没有意义 . 7. 条件运算符 条件运算符只有一个 : 表达式1 ? 表达式2 : 表达式3 当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值. 也是 Java 中唯一的一个 三目运算符 , 是条件判断语句的简化写法 . 代码如下 求两个数之间的最大值 int a 1;int b 2;int max a b ? a : b;System.out.println(max);运行结果如下 注意 1. 表达式 2 和表达式 3 的结果要是同类型的除非能发生类型隐式类型转换 2. 表达式不能单独存在其产生的结果必须要被使用。 8. 运算符的优先级 在一条表达式中各个运算符可以混合起来进行运算但是运算符的优先级不同比如 * 和 / 的优先级要高于 和 - 有些情况下稍不注意可能就会造成很大的麻烦。 例如 // 求a和b的平均值int a 10;int b 20;int c a (b - a) 1;System.out.println(c);上述表达式中由于 的优先级要高于 , 因此 a 先和 b-a 的结果做加法整体为 20 最后再进行右移因此结果为10 。 不过具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可. 例如 // 求a和b的平均值int a 10;int b 20;int c a ((b - a) 1);System.out.println(c);运行结果如下 本文是作者学习后的总结如果有什么不恰当的地方欢迎大佬指正