一、算术运算符
算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。
Java 中常用的算术运算符:
其中,++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同的
例1:
运行结果:
例2:
运行结果:
一定要注意哦!自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误的!
在不参与运算时,++、--放在前后都一样
int a = 3; int b = 3; a++; --b; //不参与运算,都是自增1或者自减1 System.out.println(a); System.out.println(b); //a=4,b=2
例子:
int a = 3; int b; b = a++ + 10;//加号在后,运算中无效,++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1; System.out.println(a); //a=4 System.out.println(b); //b=13
int a = 3; int b; b = ++a + 10;//加号在前,运算中生效,++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。 System.out.println(a); //a=4 System.out.println(b); //b=14
PS:% 用来求余数,也称为”取模运算符“
例子:
public class HelloWorld{ public static void main(String[] args) { int age1=24; int age2=18; int age3=36; int age4=27; int sum=age1+age2+age3+age4; double avg=sum/4; int minus=Math.abs(age1-age2); int newAge=--age1; System.out.println("四个年龄的总和:"+sum); System.out.println("四个年龄的平均值:"+avg); System.out.println("age1 和 age2年龄差值:"+minus); System.out.println("age1自减后的年龄:"+newAge); } }
二、赋值运算符
例子:
public class HelloWorld{ public static void main(String[] args) { int one = 10 ; int two = 20 ; int three = 0 ; three=one+two; System.out.println("three = one + two ==> "+three); three+=one; System.out.println("three += one ==> "+three); three-=one; System.out.println("three -= one ==> "+three); three*=one; System.out.println("three *= one ==> "+three); three/=one; System.out.println("three /= one ==> "+three); three%=one; System.out.println("three %= one ==> "+three); } }
三、比较运算符
比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
Java 中常用的比较运算符如下表所示:
注意哦:
1、 > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型
2、 == 、 != 两边的操作数既可以是数值类型,也可以是引用类型
例子:
public class HelloWorld{ public static void main(String[] args) { int a=16; double b=9.5; String str1="hello"; String str2="imooc"; System.out.println("a等于b:" + (a == b)); System.out.println("a大于b:" + (a > b)); System.out.println("a小于等于b:" + (a < b)); System.out.println("str1等于str2:" + (str1.equals(str2))); } }
ps: 1、java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
4、==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true。
四、逻辑运算符
逻辑运算符主要用于进行逻辑运算。Java 中常用的逻辑运算符如下表所示:
我们可以从“投票选举”的角度理解逻辑运算符:
1、 与:要求所有人都投票同意,才能通过某议题
2、 或:只要求一个人投票同意就可以通过某议题
3、 非:某人原本投票同意,通过非运算符,可以使其投票无效
4、 异或:有且只能有一个人投票同意,才可以通过某议题
当使用逻辑运算符时,我们会遇到一种很有趣的“短路”现象。
譬如:( one > two ) && ( one < three ) 中,如果能确定左边 one > two 运行结果为 false , 则系统就认为已经没有必要执行右侧的 one < three 啦。
同理,在( one > two ) || ( one < three ) 中,如果能确定左边表达式的运行结果为 true , 则系统也同样会认为已经没有必要再进行右侧的 one < three 的执行啦!
例子:
public class HelloWorld { public static void main(String[] args) { boolean a = true; // a同意 boolean b = false; // b反对 boolean c = false; // c反对 boolean d = true; // d同意 //a与b都必须要同意才能通过 System.out.println((a && b) + " 未通过"); //a与b必须有一人同意才能通过 System.out.println((a || b) + " 通过"); //a为反对才能通过 System.out.println((!a) + " 未通过"); //c与d中必须有且只有一人同意才能通过 System.out.println((c ^ d) + " 通过"); } }
五、条件运算符