运算符大致分为以下几类:
- 算术运算符: + - * / % ++ –
- 赋值运算符: = += -= *= /=
- 关系运算符: > < >= <= == != instanceof
- 逻辑运算符: && || !
- 条件运算符: ? :
- 位运算符:& | ^ ~ >> >>> <<
1、算术运算符主要是,加,减,乘,除,取余,自增,自减
//自增,自减 说明:
//情况1: 自增自减在一条语句中,不用交互
public class Demo1 {
public static void main(String[] args) {
int age = 20;
//常见的自增,自减多用于for循环
for(int i = 15; i < age; i++){ // 分号后面的 i++ 是一条语句,不用考虑是先赋值还是先进行自增
if(i < age ){
System.out.println("此时 i和age分别是:"+i+","+age);
age--; // 分号后面的 age-- 是一条语句,不用考虑是先赋值还是先进行自减
System.out.println("进行age自减后的i和age分别是:"+i+","+age);
}
}
}
}
结果:
此时 i和age分别是:15,20
进行age自减后的i和age分别是:15,19
此时 i和age分别是:16,19
进行age自减后的i和age分别是:16,18
此时 i和age分别是:17,18
进行age自减后的i和age分别是:17,17
/*
情况2: 自增自减在语句中
i++ 自增符号在变量后面,先赋值,然后进行自增运算 (就是将数值先参与sum+(i++)原值,然后进行自增)
++i 自增符号在变量前面,先自增运算,然后进行赋值
*/
public class Demo1 {
public static void main(String[] args) {
int sum = 0;
//for循环中的 i 自增去掉,写到{ }里面
for(int i = 0; i < 4;){
System.out.println("此时 i和sum分别是:"+i+","+sum);
sum = sum + (i++) ;
System.out.println("进行i自增后的i和sum分别是:"+i+","+sum);
}
}
}
结果:
此时 i和sum分别是:0,0
进行i自增后的i和sum分别是:1,0
此时 i和sum分别是:1,0
进行i自增后的i和sum分别是:2,1
此时 i和sum分别是:2,1
进行i自增后的i和sum分别是:3,3
此时 i和sum分别是:3,3
进行i自增后的i和sum分别是:4,6
2、 赋值运算符: = += -= *= /=
public class Demo1 {
public static void main(String[] args) {
int sum = 0;
for(int i = 0; i < 4;i++){
// sum = sum + i; +=就是把变量 sun = sum + i 简写为了加等于 +=
sum += i;
System.out.println("sum:"+sum);
}
}
}
结果:
sum:0
sum:1
sum:3
sum:6
3、instanceOf 用来判断某个实例是不是某个类的实例。子类实例也是父类的实例 结果只有true,false
4、逻辑运算符: && || ! 逻辑与或非(也叫做短路与或非)
说明:
&& :从左往右的运算规则,如果左边运算为false,就不会执行右边的语句,直接返回false
||:从左往右的运算规则,如果左边运算j结果为true,就不会执行右边的语句,直接返回true
5、条件运算符: ? :
说明:
//如果问号前面的结果为真(true),那么返回问号后面的值
//如果问号前面的运算结果为假(false),返回冒号后面的值;
int a = 2 > 1 ? 2: 1; //如果2大于1,返回2,否则返回1 可以用变量,来判断获取最大值
//结果: 2
6、位运算符:& | ^ ~ >> >>> <<
位运算是基于二进制,分别指 与,或,异或,非,右移,无符号右移,左移
Integer.toBinaryString(num);//用javaAPI自带的输出二进制
如: 2 和 3 进行运算 (java运行结果中,前面的0不会显示出来,仅仅便于查看)
2 :0000 0010
3 :0000 0011
& :0000 0010 //2与3: 相同为1
| :0000 0011 //2或3: 有一个1,结果就为1
^ : 0000 0001 //2异或3: 相同为0,不同为1
//非2:因为int类型是4个字节,1字节=8位 所以显示为32位
~2:1111 1111 1111 1111 1111 1111 1111 1101
2>>3:0000 0000 //java二进制会显示 0
2<<3:0001 0000 //java二进制会显示 10000
2>>>3:0000 0000 //java二进制会显示 0
负数:-2(负数展示是:先取反再+1)
-2:1111 1111 1111 1111 1111 1111 1111 1110
-2>>>3:无符号右移三位
0001 1111 1111 1111 1111 1111 1111 1 //java二进制
536870911 //输出java十进制