运算符_交换值_优先级_三元_转义_if判断【MRN】

一、运算符

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("老年");
        }
    }

}

猜你喜欢

转载自blog.csdn.net/jl15988/article/details/108710662
今日推荐