运算符

一、赋值运算符

/*
    赋值运算符:
        =  += -= *= /= %=
 */
public class FuZhiDemo1 {
    public static void main(String[] args) {
        int a = 3;

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

        a-=5;
        System.out.println(a);

    }
}
/*
    short s=1, s = s+1;
    short s=1, s+=1;

 */
public class FuZhiDemo2 {
    public static void main(String[] args) {
//        short s = 1;
//        s = (short) (s + 1);
//        System.out.println(s);

        short s = 1;
        s += 1; // s = (short) (s + 1);
        System.out.println(s);

    }
}

二、关系运算符

/*
    关系运算符:
        > < >= <= != ==

        关系表达式的结果一定是boolean类型的
 */
public class GuanXiDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println(a==b); // false
//        System.out.println(a=b); // 4
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a<=b);
        System.out.println(a>=b);
        System.out.println(a!=b);
    }
}

三、逻辑运算符

/*
    逻辑运算符:
        & | ^ ! && ||

    逻辑运算符,参与运算的参数类型是boolean,结果也是一个boolean类型的
 */
public class LuoJiDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        // & 有false则false
//        System.out.println((a++>3)&(b++>4)); // false & false = false
//        System.out.println("a: " + a + ", b: " + b);
//        System.out.println((a++>3)&(b++==4)); // false & true = false
//        System.out.println((a++==3)&(b++>4)); // true & false = false
//        System.out.println((a++==3)&(b++==4));// true & true = true

        // && 短路与 当左边为false的时候,右边表达式不会执行,结果为false
//        System.out.println((a++ > 3) && (b++ > 4)); // false && false = false
//        System.out.println("a: " + a + ", b: " + b);
//        System.out.println((a++ > 3) && (b++ == 4)); // false && true = false
//        System.out.println((a++ == 3) && (b++ > 4)); // true && false = false
//        System.out.println((a++ == 3) && (b++ == 4));// true && true = true


        // | 有true则true
//        System.out.println((a++ > 3) | (b++ > 4)); // false | false = false
//        System.out.println((a++ > 3) | (b++ == 4)); // false |  true = true
//        System.out.println((a++ == 3) | (b++ > 4)); // true | false = true
//        System.out.println((a++ == 3) | (b++ == 4));// true | true = true
//        System.out.println("a: " + a + ", b: " + b);

        // || 短路或 当左边为true的时候,右边表达式不会执行,结果为true
//        System.out.println((a++ > 3) || (b++ > 4)); // false || false = false
//        System.out.println((a++ > 3) || (b++ == 4)); // false ||  true = true
//        System.out.println((a++ == 3) || (b++ > 4)); // true || false = true
//        System.out.println((a++ == 3) || (b++ == 4));// true || true = true
//        System.out.println("a: " + a + ", b: " + b);

        // System.out.println(100>a>10) // java中不允许出现连续比较
        System.out.println(a>10 && a<100);


        // ^ 异或 相同则false,不同则true
//        System.out.println((a++ > 3) ^ (b++ > 4)); // false ^ false = false
//        System.out.println((a++ > 3) ^ (b++ == 4)); // false ^  true = true
//        System.out.println((a++ == 3) ^ (b++ > 4)); // true ^ false = true
//        System.out.println((a++ == 3) ^ (b++ == 4));// true ^ true = false

        //! 将true变成false, false变成true
//        System.out.println(!(a++ > 3));


    }
}

四、三目运算符

/*
    三目运算符【三元运算符】:
    语句定义格式:
        (关系表达式)?表达式1:表达式2;

    这里的表达式1和表达式2必须是要有一个结果值的。
 */
public class SanMuDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 8;
        //需求:求两个数中的最大值
//        int x = (a > b) ? a : b;
//        System.out.println(x);
//        (a > b) ? System.out.println(a) : System.out.println(b);
    }
}

五、算术运算符

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

    java中,一个算数表达式最终的结果数据类型,是由参与运算最大的那个参数类型决定的。
 */
public class SuanShuDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
//        System.out.println(a+b);
//        System.out.println(a-b);
//        System.out.println(a*b);
//        System.out.println(a/b); // 整除,保留整数部分
//        System.out.println(a%b);


        System.out.println(a*1.0/b);
    }
}

/*
    ++: 自加1
        ++在后,先赋值再进行自加1;++在前,先自加1,再赋值参与运算
    --: 自减1
        --在后,先赋值再进行自减1;--在前,先自减1,再赋值参与运算
 */
public class SuanShuDemo2 {
    public static void main(String[] args) {
        /**
         *  单独使用
         */
        int a = 3;
        int b = 4;
        System.out.println("a: " + a);
        System.out.println("b: " + b);
        System.out.println("-----------------------------");
//        a++;
//        b++;
//        ++a;
//        ++b;
//        System.out.println("a: " + a);
//        System.out.println("b: " + b);

        /**
         *  混合使用
         */
//        int x = a++;
//        System.out.println(x); // 3
        int x2 = ++a;
        System.out.println(x2);

    }
}

1.练习1

public class SuanShuTest1 {
    public static void main(String[] args) {
        //请分别计算出a,b,c的值
        int a = 10;
        int b = 10;
        int c = 10;

        a = b++;// a:10 9  10 9
        c = --a;// b:11 11 10 10
        b = ++a;// c:10 9  9  8
        a = c--;
        System.out.println("a: " + a);//9
        System.out.println("b: " + b);//10
        System.out.println("c: " + c);//8
    }
}

2.练习2

public class SuanShuTest2 {
    public static void main(String[] args) {
        int a = 4;
        int b = (a++)+(++a)+(a*10);
       //         4     6     60
       //
        System.out.println("a: "+a); // 6
        System.out.println("b: "+b); // 70
    }
}

六、位运算

/*
    位运算符:针对数值2进制形式的计算
      & | ^ ~  >>  << >>>

    位运算符,参与运算的是数值,结果也是一个数值

 */
public class WeiDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;

//        System.out.println(a&b);
//        System.out.println(a|b);
//        System.out.println(a^b);
        System.out.println(~a);
    }
}
/*
    计算机中所有的运算都是采用补码进行的
    3的补码:00000000 00000000 00000000 00000011
    4的补码:00000000 00000000 00000000 00000100

    &:有0则0
        00000000 00000000 00000000 00000011
      &
        00000000 00000000 00000000 00000100
       -------------------------------------
        00000000 00000000 00000000 00000000

    |:有1则1
        00000000 00000000 00000000 00000011
      |
        00000000 00000000 00000000 00000100
       -------------------------------------
        00000000 00000000 00000000 00000111

    ^:相同则0,不同则1
        00000000 00000000 00000000 00000011
      ^
        00000000 00000000 00000000 00000100
       -------------------------------------
        00000000 00000000 00000000 00000111

    ~: 0变成1,1变成0
        00000000 00000000 00000000 00000011
      ~
        -------------------------------------
   补码  11111111 11111111 11111111 11111100
   反码  11111111 11111111 11111111 11111011
   原码  10000000 00000000 00000000 00000100
   -----------------------------------------
   -4

 */

/*
     >>:右移,整体补码向右移动若干位,右边多出的部分丢弃,若最高位是1,左边就用1补齐;反之用0补齐
     <<:左移,整体补码向左移动若干位,左边多出的部分丢弃,右边用0补齐
     >>>:无符号右移,整体补码向右移动若干位,右边多出的部分丢弃,左边无论最高位是0还是1,都用0补齐
 */
public class WeiDemo2 {
    public static void main(String[] args) {
        System.out.println(24>>2); // 24/2^2 = 6
        System.out.println(2<<4);  // 2*2^4 = 32

        System.out.println(-24>>>2); // 1073741818
    }
}
/*
    24的补码:00000000 00000000 00000000 00011000

            00000000 00000000 00000000 00011000
      >>2:  00000000 00000000 00000000 00000110(00)
      ------------------------------------------------

    2的补码:00000000 00000000 00000000 00000010

                00000000 00000000 00000000 00000010
     <<4: (0000)00000000 00000000 00000000 00100000


    -24
    原码:10000000 00000000 00000000 00011000
    反码:11111111 11111111 11111111 11100111
    补码:11111111 11111111 11111111 11101000
    ------------------------------------------
         11111111 11111111 11111111 11101000
   >>>2: 0011111111 11111111 11111111 111010(00)



 */

posted @ 2024-10-19 10:14  你的镁偷走了我的锌  阅读(98)  评论(0)    收藏  举报