Java 运算符计算机的最基本用途之一就是执行数学运算作为一门计算机语言Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符算术运算符算术运算符用在数学表达式中它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。表格中的示例假设整数变量A的值为10变量B的值为20操作符描述实例加法 - 相加运算符两侧的值A B 等于 30-减法 - 左操作数减去右操作数A – B 等于 -10*乘法 - 相乘操作符两侧的值A * B等于200/除法 - 左操作数除以右操作数B / A等于2取余 - 左操作数除以右操作数的余数B%A等于0自增: 操作数的值增加1B 或 B 等于 21区别详见下文–自减: 操作数的值减少1B-- 或 --B 等于 19区别详见下文示例下面的简单示例程序演示了算术运算符。复制并粘贴下面的 Java 程序并保存为 ArithmeticOperator.java 文件然后编译并运行这个程序示例class ArithmeticOperator { public static void main(String[] args) { double number1 12.5, number2 3.5, result; //使用加法运算符 result number1 number2; System.out.println(number1 number2 result); //使用减法运算符 result number1 - number2; System.out.println(number1 - number2 result); //使用乘法运算符 result number1 * number2; System.out.println(number1 * number2 result); //使用除法运算符 result number1 / number2; System.out.println(number1 / number2 result); // 使用余数运算符 result number1 % number2; System.out.println(number1 % number2 result); } }以上示例编译运行结果如下number1 number2 16.0 number1 - number2 9.0 number1 * number2 43.75 number1 / number2 3.5714285714285716 number1 % number2 2.0自增自减运算符1、自增自减–运算符是一种特殊的算术运算符在算术运算符中需要两个操作数来进行运算而自增自减运算符是一个操作数。示例public class selfAddMinus{ public static void main(String[] args){ int a 3;//定义一个变量 int b a;//自增运算 int c 3; int d --c;//自减运算 System.out.println(进行自增运算后的值等于b); System.out.println(进行自减运算后的值等于d); } }运行结果为进行自增运算后的值等于4 进行自减运算后的值等于2解析int b a; 拆分运算过程为: aa14; ba4, 最后结果为b4,a4int d --c; 拆分运算过程为: cc-12; dc2, 最后结果为d2,c2**2、前缀自增自减法(a,–a)*先进行自增或者自减运算再进行表达式运算。**3、后缀自增自减法(a,a–)*先进行表达式运算再进行自增或者自减运算 示例示例public class selfAddMinus{ public static void main(String[] args){ int a 5;//定义一个变量 int b 5; int x 2*a; int y 2*b; System.out.println(自增运算符前缀运算后aa,xx); System.out.println(自增运算符后缀运算后bb,yy); } }运行结果为自增运算符前缀运算后a6x12自增运算符后缀运算后b6y10关系运算符下表为Java支持的关系运算符表格中的示例整数变量A的值为10变量B的值为20运算符描述实例检查如果两个操作数的值是否相等如果相等则条件为真。A B为假。!检查如果两个操作数的值是否相等如果值不相等则条件为真。(A ! B) 为真。检查左操作数的值是否大于右操作数的值如果是那么条件为真。A B为假。检查左操作数的值是否小于右操作数的值如果是那么条件为真。A B为真。检查左操作数的值是否大于或等于右操作数的值如果是那么条件为真。A B为假。检查左操作数的值是否小于或等于右操作数的值如果是那么条件为真。A B为真。示例下面的简单示例程序演示了关系运算符。复制并粘贴下面的Java程序并保存为Test.java文件然后编译并运行这个程序Test.java 文件代码public class Test { public static void main(String[] args) { int a 10; int b 20; System.out.println(a b (a b) ); System.out.println(a ! b (a ! b) ); System.out.println(a b (a b) ); System.out.println(a b (a b) ); System.out.println(b a (b a) ); System.out.println(b a (b a) ); } }以上示例编译运行结果如下a b false a ! b true a b false a b true b a true b a false位运算符Java定义了位运算符应用于整数类型(int)长整型(long)短整型(short)字符型(char)和字节型(byte)等类型。位运算符作用在所有的位上并且按位运算。假设a 60b 13;它们的二进制格式表示将如下A 0011 1100 B 0000 1101 ----------------- AB 0000 1100 A | B 0011 1101 A ^ B 0011 0001 ~A 1100 0011下表列出了位运算符的基本运算假设整数变量 A 的值为 60 和变量 B 的值为 13操作符描述实例如果相对应位都是1则结果为1否则为0AB得到12即0000 1100|如果相对应位都是 0则结果为 0否则为 1A | B得到61即 0011 1101^如果相对应位值相同则结果为0否则为1A ^ B得到49即 0011 0001〜按位取反运算符翻转操作数的每一位即0变成11变成0。〜A得到-61即1100 0011按位左移运算符。左操作数按位左移右操作数指定的位数。A 2得到240即 1111 0000按位右移运算符。左操作数按位右移右操作数指定的位数。A 2得到15即 1111按位右移补零操作符。左操作数的值按右操作数指定的位数右移移动得到的空位以零填充。A2得到15即0000 1111示例下面的简单示例程序演示了位运算符。复制并粘贴下面的Java程序并保存为Test.java文件然后编译并运行这个程序Test.java 文件代码public class Test { public static void main(String[] args) { int a 60; /* 60 0011 1100 */ int b 13; /* 13 0000 1101 */ int c 0; c a b; /* 12 0000 1100 */ System.out.println(a b c ); c a | b; /* 61 0011 1101 */ System.out.println(a | b c ); c a ^ b; /* 49 0011 0001 */ System.out.println(a ^ b c ); c ~a; /*-61 1100 0011 */ System.out.println(~a c ); c a 2; /* 240 1111 0000 */ System.out.println(a 2 c ); c a 2; /* 15 1111 */ System.out.println(a 2 c ); c a 2; /* 15 0000 1111 */ System.out.println(a 2 c ); } }以上示例编译运行结果如下a b 12 a | b 61 a ^ b 49 ~a -61 a 2 240 a 2 15 a 2 15逻辑运算符下表列出了逻辑运算符的基本运算假设布尔变量A为真变量B为假操作符描述实例称为逻辑与运算符。当且仅当两个操作数都为真条件才为真。A B为假。| |称为逻辑或操作符。如果任何两个操作数任何一个为真条件为真。A | | B为真。称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true则逻辑非运算符将得到false。A B为真。示例下面的简单示例程序演示了逻辑运算符。复制并粘贴下面的Java程序并保存为Test.java文件然后编译并运行这个程序示例public class Test { public static void main(String[] args) { boolean a true; boolean b false; System.out.println(a b (ab)); System.out.println(a || b (a||b) ); System.out.println(!(a b) !(a b)); } }以上示例编译运行结果如下a b false a || b true !(a b) true短路逻辑运算符当使用与逻辑运算符时在两个操作数都为true时结果才为true但是当得到第一个操作为false时其结果就必定是false这时候就不会再判断第二个操作了。示例public class LuoJi{ public static void main(String[] args){ int a 5;//定义一个变量 boolean b (a4)(a10); System.out.println(使用短路逻辑运算符的结果为b); System.out.println(a的结果为a); } }运行结果为使用短路逻辑运算符的结果为false a的结果为5**解析**该程序使用到了短路逻辑运算符()首先判断 a4 的结果为 false则 b 的结果必定是 false所以不再执行第二个操作 a10 的判断所以 a 的值为 5。赋值运算符下面是Java语言支持的赋值运算符操作符描述实例简单的赋值运算符将右操作数的值赋给左侧操作数C A B将把A B得到的值赋给C 加和赋值操作符它把左操作数和右操作数相加赋值给左操作数C A等价于C C A- 减和赋值操作符它把左操作数和右操作数相减赋值给左操作数C - A等价于C C - A* 乘和赋值操作符它把左操作数和右操作数相乘赋值给左操作数C * A等价于C C * A/ 除和赋值操作符它把左操作数和右操作数相除赋值给左操作数C / AC 与 A 同类型时等价于 C C / A取模和赋值操作符它把左操作数和右操作数取模后赋值给左操作数C A等价于C CA 左移位赋值运算符C 2等价于C C 2 右移位赋值运算符C 2等价于C C 2按位与赋值运算符C 2等价于C C2^ 按位异或赋值操作符C ^ 2等价于C C ^ 2| 按位或赋值操作符C | 2等价于C C | 2示例面的简单示例程序演示了赋值运算符。复制并粘贴下面的Java程序并保存为AssignmentOperator.java文件然后编译并运行这个程序AssignmentOperator.java 文件代码class AssignmentOperator { public static void main(String[] args) { int number1, number2; //将5分配给number1 number1 5; System.out.println(number1); //将变量number2的值分配给number1 number2 number1; System.out.println(number2); } }以上示例编译运行结果如下5 5条件运算符?:条件运算符也被称为三元运算符。该运算符有3个操作数并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。variable x (expression) ? value if true : value if false示例Test.java 文件代码public class Test { public static void main(String[] args){ int a , b; a 10; // 如果 a 等于 1 成立则设置 b 为 20否则为 30 b (a 1) ? 20 : 30; System.out.println( Value of b is : b ); // 如果 a 等于 10 成立则设置 b 为 20否则为 30 b (a 10) ? 20 : 30; System.out.println( Value of b is : b ); } }以上示例编译运行结果如下Value of b is : 30 Value of b is : 20instanceof 运算符该运算符用于操作对象示例检查该对象是否是一个特定类型类类型或接口类型。instanceof运算符使用格式如下( Object reference variable ) instanceof (class/interface type)如果运算符左侧变量所指的对象是操作符右侧类或接口(class/interface)的一个对象那么结果为真。下面是一个实例String name James; boolean result name instanceof String; // 由于 name 是 String 类型所以返回真如果被比较的对象兼容于右侧类型,该运算符仍然返回true。看下面的实例class Vehicle {} public class Car extends Vehicle { public static void main(String[] args){ Vehicle a new Car(); boolean result a instanceof Car; System.out.println( result); } }以上示例编译运行结果如下trueJava运算符优先级当多个运算符出现在一个表达式中谁先谁后呢这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中运算符优先级不同会导致最后得出的结果差别甚大。例如1332*2这个表达式如果按加号最优先计算答案就是 18如果按照乘号最优先答案则是 14。再如x 7 3 * 2;这里x得到13而不是20因为乘法运算符比加法运算符有较高的优先级所以先计算3 * 2得到6然后再加7。下表中具有最高优先级的运算符在的表的最上面最低优先级的在表的底部。类别操作符关联性后缀() [] . (点操作符)左到右一元expr expr–从左到右一元expr --expr - 从右到左乘性* /左到右加性 -左到右移位 左到右关系 左到右相等 !左到右按位与左到右按位异或^左到右按位或|左到右逻辑与左到右逻辑或| |左到右条件从右到左赋值 - * / ^ | 从右到左逗号左到右 福利时间如果你正在备战面试或者想要学习其他知识给大家推荐一个宝藏知识库作者整理了一些列 Java 程序员需要掌握的核心知识有需要的自取不谢。知识库地址https://farerboy.com/