javaSE——运算符

运算符

image

优先级:使用优先级为 1 的小括号可以改变其他运算符的优先级

优先级 运算符 结合性
1 ()、[]、{} 从左向右
2 !、+、-、~、++、-- 从右向左
3 *、/、% 从左向右
4 +、- 从左向右
5 «、»、>>> 从左向右
6 <、<=、>、>=、instanceof 从左向右
7 ==、!= 从左向右
8 & 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= 从右向左

演示:

package operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //Ctrl + D :复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;

        System.out.println(a+b);
        System.out.println(c-d);
        System.out.println(a*c);
        System.out.println(c/(double)d);//除法这块注意,可能产生小数要强转double

    }
}

package operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 12312312313123L;
        int b = 123;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);//long,自动向最高类型转换
        System.out.println(b+c+d);//int
        System.out.println(c+d);//int,short+byte注意最高类型不是int,也会自动转为int
								//另外int类型不能转string
    }
}
package operator;

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:  正确,错误  布尔值
        //if

        int a = 10;
        int b = 20;
        int c = 21;

        //取余%,模运算
        System.out.println(c%a); // 21/10=2...1,结果为1

        System.out.println(a<b);
        System.out.println(a>b);
        System.out.println(a==b);
        System.out.println(a!=b);
    }
}
package operator;

public class Demo04 {
    public static void main(String[] args) {
        //++ -- 自增,自减 一元运算符
        int a=3;

        int b=a++; //执行完这行代码,先给b赋值再自增,b=3
        //a = 4

        int c = ++a;//执行这行代码之前,先自增,再给c赋值,c=5
        //a=5


        //幂运算,用double接收,用到数学工具类
        double m = Math.pow(2,3);
        System.out.println(m);

    }
}
package operator;

public class Demo05 {
    public static void main(String[] args) {
        //与(and)  或(or)  非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a && b: "+(a&&b));//逻辑与:两个都为真,结果才为true
        System.out.println("a || b: "+(a||b));//逻辑或:两个变量有一个为真,则结果才为true
        System.out.println("! (a && b): "+!(a&&b));//取反:如果是真,则变为假

        //短路运算:比如逻辑与,如果左侧表达式为false不会判断右侧而直接出结果false
        int m =2;
        boolean k =(m<1)&&(m++<1);//如果执行右侧表达式,m结果为3
        System.out.println(k);//false
        System.out.println(m);//2,短路
    }
}
package operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        -------------------
        A&B = 0000 1100 同时为1才取1
        A|B = 0011 1101 有一个为1就为1
        A^B = 0011 0001 相同为0,不同为1
        ~B = 1111 0010

        效率极高!!!
        <<   二进制1左移一位, 十进制*2
        >>   二进制1右移一位, 十进制/2

        0000 0000    0
        0000 0001    1
        0000 0010    2
        0000 0011    3
        0000 0100    4
        0000 1000    8
        0001 0000    16

         */
        System.out.println(2<<3);//16
    }
}
package operator;

public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        a += b;//a=a+b
        //...
        System.out.println(a);

        //字符串连接符 包含string和+
        //面试题
        System.out.println(""+a+b);//1020:遇到string先转化为字符进行拼接
        System.out.println(a+b+"");//30:先运算为30,遇到String再转化为字符串进行拼接
    }
}
package operator;

public class Demo08 {
    //三元运算符
    // x ? y : z
    //如果x==true,结果为y,否则结果为z
    public static void main(String[] args) {
        int score = 50;
        String type = score < 60 ? "不及格" : "及格";//必须掌握,代替if更精简
        System.out.println(type);
    }

}
posted @ 2021-11-29 15:59  群青Bleu  阅读(57)  评论(0编辑  收藏  举报