代码改变世界

Day08运算符

2022-04-10 16:22  rebirthhhh  阅读(4)  评论(0编辑  收藏  举报

运算符

算数运算符:+,-,*,/,++,--

赋值运算符=

关系运算符:>, <, >=, <= ,==, !=instanceof

这三种必须掌握。

package operator;

public class Demo01 {
    public static void main(String[] args) {
        //ctrl + D :复制当前行到下一行
        int a =10;
        int b =20;
        int c =25;
        int d =25;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);//输出了0,本来得0,5,自动取成了0,所以我们要转换为double
        System.out.println((double) a/b);//输出0.5,正确

    }
}

package operator;

public class Demo02 {
    public static void main(String[] args) {

        long a = 123123123123123L;
        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
        //计算时,有一个为long,结果为long(double也是)
        //没有long时,结果都为int(无论你有没有int)

    }
}

package operator;

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误  布尔值
        int a = 10;
        int b = 20;
        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true

        int c = 21;
        System.out.println(c%a);//   c / a   21/10=2 ... 1
        //输出1 余数为1  (模运算)
    }
}

package operator;

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

        int b = a++;//a++   a = a + 1  执行完这行代码后,先给b赋值,再自增
        //a = a + 1
        System.out.println(a);//4
        //a = a + 1
        int c = ++a;//++a   a = a + 1  执行完这行代码前,先自增,再给c赋值

        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5

        //幂运算2^3 2*2*2 = 8 java中没有^
        double pow = Math.pow(2,3);//2的3次方
        System.out.println(pow);
        //很多运算,我们会使用一些工具类来操作
    }
}

逻辑运算符:&&,||,!

位运算符:&,|,^, <<, >>, >>>

条件运算符?:

拓展赋值运算符:+=, -=, *=, /=

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)); //false 逻辑与 两个都为真 结果才为真
        System.out.println("a || b:"+(a||b)); //true 逻辑或 两个有一个为真 结果为真
        System.out.println("!(a && b):"+!(a&&b)); //true 是真则为假 是假则为真

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);//false  前面是错的 后面的就不会执行了
        System.out.println(d);
        System.out.println(c);//输出的5不是6  c++没有执行

    }

}

package operator;
//位运算

public class Demo06 {
    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 异或
        ~A = 1100 0011      取反
        ~B = 1111 0010

         2*8 = 16   2*2*2*2  2*8怎么运算最快 (面试题)
         << >> 左移 右移
         0000 0000 0
         0000 0001 1
         0000 0010 2
         0000 0011 3
         0000 0100 4
         0000 1000 8
         0001 0000 16   逢2进1 翻一倍 1向左移一位
         所以! << *2   >> /2
         这些经常用来和二进制打交道的  效率极高
          */
        System.out.println(2<<3); //16  2乘3个2


    }
}

package operator;

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

        a+=b; // a = a+b
        a-=b;// a = a-b
        //字符串链接符 + ,String
        System.out.println(a+b);

        System.out.println(""+a+b);//1020
        System.out.println(a+b+"");//30
        //面试题 这两个有什么区别
        //如果字符串""在前面 则会拼接  字符串""在后面,前面的a+b依旧进行运算
    }
}

package operator;
//三元运算符 虽然是偷懒的 但必须掌握 以后会很常见。更加精简和便于理解
public class Demo08 {
    public static void main(String[] args) {
        // x ? y :z
        //如果x==true,则结果为y 否则结果为z。
        int score = 80;
        String type = score <60 ? "不及格":"及格";
        //小于60则及格 否则及格
        System.out.println(type);

    }
}

优先级()