一、运算符
1.按位运算符
A>>B:将A转为二进制,然后二进制数字向右移动B位数,超出的部分截取掉,剩余的部分转为十进制就是结果
A<<B:将A转为二进制,然后二进制数字向左移动B位数,空出来的位置补0,然后转为十进制。
public class Model1 {
public static void main(String[] args) {
int a = 7 >> 2;
System.out.println(a);//a = 1
a = 7 << 2;
System.out.println(a);//a = 28
a = -1 << 2;
System.out.println(a);//a = -4
a = -1 >> 2;//不移动符号位
System.out.println(a);//a = -1
a = -1 >>> 1;//带着符号位位移--忽略正负号,只有向右的没有向左的
System.out.println(a);//a = 2147483647
}
}
2.按位与运算符
A&B,将A和B转为二进制,右对齐上下比较,两者都为1则为1,否则为0,再转为十进制
a = 7 & 8;
System.out.println(a);//a = 0
3.按位或运算符
A|B,将A和B转为二进制,右对齐上下比较,两者有一个为1则为1,再转为十进制
a = 6 | 7;
System.out.println(a);//a = 7
4.按位异或运算
A^B,将A和B转为二进制,右对齐上下比较,两者不同则为1,相同则为0,再转为十进制
a = 7 ^ 8;
System.out.println(a);//a = 15
5.8除以2的最快运算方式–移位运算
8>>1(8移位除数的指数)
再如:16除以8就是16>>3
二、交换值的三种方法
public class Model6 {
public static void main(String[] args) {
//第三变量交换值
//两个变量
int a = 12;
int b = 32;
//交换值
int c = a;//将a值赋给c
a = b;//将b值赋给a
b = c;//将c值赋给b
System.out.println(a);
System.out.println(b);
//求和交换值
int e = 34;
int d = 56;
e +=d;//将两者之和赋值给e
d = e - d;//和减去d,赋值d为原来e的值
e = e - d;//和减去原来的e的值
System.out.println(e);
System.out.println(d);
//异或运算交换值,只适用于整数
a = 7;
b = 3;
a = a ^ b;//a ^ b(a)二进制100,b二进制11,a=4
b = a ^ b;//a ^ b(b)二进制111,b=7
a = a ^ b;//a ^ b(a)二进制11,a=3
System.out.println(a);
System.out.println(b);
}
}
三、优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-(正负)、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、-(加减) | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
四、三元运算
public class Model3 {
public static void main(String[] args) {
int a = 1>2?12:23;
System.out.println(a);//a = 23
}
}
面试题
System.out.println(1>2?1.2:2);
//直接输出时,后面两个值属性可以不同,类型取范围大的,结果为2.0
//赋值的时候后面两个值类型必须相同
int a = 1>2?1.2:2//报错
public class Model4 {
public static void main(String[] args) {
int a = 1;
int b = 1>2?a++:a++;
System.out.println(b);//b = 1
System.out.println(a);//a = 2
}
}
五、转义符
转义字符 | 意义 |
---|---|
\n | 换行 |
\t | 横向跳到下一 |
\r | 回车 |
\ | \ |
" | " |
’ | ’ |
六、if分支判断
1.if…else(只有一条执行语句,{}可以省略)
public class Model6 {
public static void main(String[] args) {
int a = 23;
if(a%2==0) {
System.out.println(a+"为偶数");
}else {
System.out.println(a+"为奇数");
}
}
}
2.if…else if…else if…else
public class Mode8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int age = 23;
if(age>=0&&age<=8) {
System.out.println("儿童");
}else if(age>8&&age<=12) {
System.out.println("少年");
}else if(age>12&&age<=35) {
System.out.println("青年");
}else if(age>35&&age<=60) {
System.out.println("中年");
}else {
System.out.println("老年");
}
}
}