一、简单的四则运算
简单的+ - * / %
对于%,要注意浮点型也是可以的
public static void main(String[] args) {
System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
System.out.println(5.5%2);//1.5
}
二、增量运算符
1.++前置:是变量先自增后取值
2.++后置:是变先取值后自增
public static void main(String[] args) {
int a=0;
int b=a++;//++后置此处b先取值a为0后变量a自增变为1
int c=++a;//++前置此处a已经为1,然后++前置是先自增a自增变为2然后再赋值给c
}
三、逻辑运算符
1.&&逻辑与
public static void main(String[] args) {
int a=0;
int b=1;
System.out.println((a>b)&&(a==0));//输出false
System.out.println(true&&true);//同为真才输出true
System.out.println(true&&false);//只要有一个假就输出false
System.out.println(false&&true);
System.out.println(false&&false);//同假输出false
}
表达式1&&表达式2,要注意此处表达式1与2 都为布尔类型的表达式,如果表达式1 为false则表达式2不会执行
2.||逻辑或
public static void main(String[] args) {
int a=0;
int b=1;
System.out.println((a>b)||(a==0));//输出true
System.out.println(true||true);//有真就输出true
System.out.println(true||false);//只要有一个真就输出true
System.out.println(false||true);//有真就输出true
System.out.println(false||false);//同假才输出false
}
3.!逻辑非
!表达式,该表达式也是布尔类型的表达式,如果表达式为真则!表达式就为假反之同理
public static void main(String[] args) {
int a=0;
int b=1;
System.out.println(!true);//输出false
System.out.println(!false);//输出true
}
表达式1||表达式2,要注意同上,表达式1与2都是布尔类型的表达式,如果表达式1为true则表达式2不会执行
五、位运算符
1.&按位与:两个数的二进制序列对应位有0取0,同1取1
public static void main(String[] args) {//对应位:
int a=3; //二进制:00000000000000000000000000000011
int b=5; //二进制:00000000000000000000000000000101
System.out.println(a&b);//按位与:00000000000000000000000000000001 是1
}
2.|按位或:两个数的 二进制序列对应位有1取1,同0取0
public static void main(String[] args) {//对应位
int a=3; //二进制:00000000000000000000000000000011
int b=5; //二进制:00000000000000000000000000000101
System.out.println(a|b);//按位或:00000000000000000000000000000111 是7
}
3.~按位取反:对于一个数的二进制序列的每一位按位取反
public static void main(String[] args) {
int i=-1; //二进制:10000000000000000000000000000001由于负数在内存中是以补码的形式存储,运算时使用补码,而补码=原码取反+1
//补码 :11111111111111111111111111111111
System.out.println(~i);//取反后:0000000000000000000000000000000 所以输出0
}
4.^按位异或:两个数的二进制序列对应的每一位,相同取0,不同取1
public static void main(String[] args) {//对应位:
int a=3; //二进制 :00000000000000000000000000000011
int b=5; //二进制 :00000000000000000000000000000101
System.out.println(a^b);//按位异或:00000000000000000000000000000110 是6
}
六、移位运算符
1.左移<<:二进制序列左边丢弃右边补0,左移的效果相当于×2^n
public static void main(String[] args) {//对应位:
int a=3; //二进制 :00000000000000000000000000000011
int b=a<<1;
System.out.println(b);//左移后:00000000000000000000000000000110 是6
}
2.右移>>:二进制序列左边补符号,右边丢弃,效果相当于/2^n
public static void main(String[] args) {//对应位:
int a=6; //二进制 :00000000000000000000000000000110
int b=a>>1;
System.out.println(b);//右移后:00000000000000000000000000000011 是3
}
3.无符号右移>>>:二进制序列左边补0,右边丢弃
七、条件运算符
a=表达式1?表达式2:表达式3;该表达式1为布尔类型表达式,表达式2,3必须同类型
如果表达式1为真就赋值为表达式2否则3
public static void main(String[] args) {
int b=true?1:2;
System.out.println(b);
}



