Java基础运算符多大点事儿

Java基础运算符

基础运算符

java中的基础运算符和就是数学里面的 + - * /

但是Java中存在不同的数据类型,那不同的数据类型之间能否相加呢?

当然可以啊 但是数据类型也会有所改变 当有Long类型时结果就为Long

没有Long的话结果都为Int

package com.operator;
public class Demo01 {
    public static void main(String[] args) {
        //基础运算符 + - * / 以及不同类型的数据能否相加
        long a = 12354564L;
        int b = 123;
        short c = 10;
        byte d = 8;
        /**
         * 不同类型的数据相加能实现吗?
         * 当然可以但是数据类型会有改变
         * 当有Long时结果为Long 当没有Long时结果为Int
         */
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int
    }
}

自增 自减 一元运算符

主要是弄清楚代码执行前后执行是先赋值还是后赋值

package com.operator;

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

        int b = a++; //执行完代码之后先给b赋值再自增
        //a = a+1; a=4

        //a = 4+1
        int c = ++a; //执行完这行代码前先自增再给c赋值

        System.out.println("a等于:"+a);//5
        System.out.println("b等于:"+b);//3
        System.out.println("c等于:"+c);//5
     //幂运算2^3 = 8 借助工具进行运算
       double pow = Math.pow(2,3);
        System.out.println(pow);

    }
}

与,或,非逻辑运算符

要注意的是逻辑与运算符里面的短路运算当第一判断条件为false的时候遍不会去执行或者判断后面的条件

package com.operator;

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

        System.out.println("a && b"+(a && b));//逻辑与运算两个为真才为真
        System.out.println("a || b"+(a || b));//逻辑或运算一个为真就为真
        System.out.println("!(a && b)"+(!(a&&b)));//如果是真,则为假 如果是假,则为真

        /*与运算如果一开始遇到的就为false那不将不悔执行后面的语句*/
        //短路运算测试
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);//c在这里并没有加一说明在判断完c<4为false之后


    }
}

位运算

位运算是一种效率极高的运算符通常用于底层

package com.operator;

public class Demo04 {
    public static void main(String[] args) {
        /*位运算 效率极高的运算
        * A = 0011 1100
        * B = 0000 1101
        *--------------------------------------
        * A&B = 0000 1100 1相同的时候才是1 其余都是0
        * A|B = 0011 1101 都是0的时候才为0 其余都是1
        * A^B = 0011 0001 异或相同是0 不相同是1
        * ~B = 1111 0010 取反 与B相反
        *
        * 面试题
        * 2*8 = 16 2*2*2*2
        * <<左移 *2
        * >>右移 /2
        *
        * 二进制 逢二进一
        * 0000 0000   0
        * 0000 0001   1
        * 0000 0010   2
        * 0000 0011   3
        * 0000 0100   4
        * 0000 0101   5
        * 0000 0110   6
        * 0000 0111   7
        * 0000 1000   8
        * 0001 0000   16
        * 0010 0000   32
        * */
        System.out.println(2<<3);//16 1的位置向左移动了三位
        System.out.println(16>>3);//2
    }
}

扩展赋值运算符

+=, -=, *=, /=

其实就是一种偷懒的写法

package com.operator;

public class Demo05 {
    public static void main(String[] args) {
        /*
        * 扩展赋值运算符
        * +=, -=, *=, /=
        * */
        int a =10;
        int b =20;
        int c =30;
        a+=b;//a = a+b
        a-=b;//a = a-b
        a*=b;//a = a*b
        a/=b;//a = a/b
        System.out.println(a);

        //面试题
        //字符串连接符 + 只要有一方出现String类型就会把其他操作数转换为String进行连接
        System.out.println(""+a+b);//1020
        System.out.println(a+b+"");//30
        System.out.println(a+b+""+c);//3030
    }
}

三元运算符

这是必须掌握的一种运算符在开发中比较常见

package com.operator;

public class Demo07 {
    public static void main(String[] args) {
        /*
        *三元运算符
        *x ? y :z
        * 这是什么意思呢其实很简单
        * x==true,则结果为y,否则结果为z
        *  */
        int score = 75;
        String scores= score<60 ?"不及格":"及格";//必须掌握开发中比较常见
        System.out.println(scores);

    }
}

以上的内容都是通过下方学习视频得来的

狂神说Java免费开源越看越上头

程序猴冲冲冲

posted @ 2021-08-11 23:39  程序狒  阅读(43)  评论(0)    收藏  举报