Java基本语法2

运算符

算术运算符

在Java基本语法1文章末尾可见

比较运算符

>,>=,<,<=,==,!=

==, !=既可以用于数值之间的比较,也可以用于比较布尔值之间的比较,还可以用于引用数据类型

>, <, >=, <=  只能用于数值之间的比较

返回值都是true或false

public static void main(String[] args) {
System.out.println('a'>10);
System.out.println(10>5);
System.out.println('a'!=80);
System.out.println(true==true);
System.out.println("abc"=="abc");
}

赋值运算符

=    +=    -=    *=    /=    %=

把右边的值赋给左边变量。注意:右边字面常量和左边字面常量的变量类型需要一致(也可以小类型隐式转换为大类型)注意强制转换

public static void main(String[] args) {
        int a = 10;
        a += 5;//a=a+5
        System.out.println(a);//15
        a -= 5; //a=a-5
        System.out.println(a);
    short s = 3;
//          s = s+2;  运算结果是int
          s+=2;//会隐式展缓 展开-->  s = (short)(s+2)
        System.out.println(s);

        boolean b1 = false;
        //注意区别==和=,==是比较运算符,=是赋值运算符。
        if(b1 = true){
            System.out.println(1);
        }else{
            System.out.println(2);
        }//1
    int i = 1;
        i *= 0.1;//i = (int)(i*0.1)
        System.out.println(i);//0
        i++;
        System.out.println(i);//1
    }

逻辑运算符

&一逻辑与       |一逻辑或        !一逻辑非

&&一短路与   ||一短路或        ^一逻辑异或(相同为false,不同为true)

都只能是逻辑值与逻辑值之间的计算 

逻辑与   &  && 当所有的表达式结果为true,结果为true,只要有一个false,结果为false

&:不会出现短路现象。前面已经有表达式为false,后面表达式还会运行

&&:会出现短路现象,所以称为短路与。一旦有表达式值为false,后面其他的表达式就不执行了,称为短路(常用,效率)

​
 public static void main(String[] args) {
      
        int a = 10;
        int b = 15;
        int c = 20;
        
        System.out.println(a<b & c>b);//true & true = true
       
        System.out.println(a>b & c++>b);//false & true = false
        System.out.println(c);//21

​}

逻辑或  |    ||表达式只要有一个为true,结果为true

|:不会出现短路现象。有表达式返回true,但后面的表达式还会运行

||:会出现短路现象。一旦出现有表达式返回true,后面的的表达式不会执行

 public static void main(String[] args) {
        int a = 10;
        int b = 15;
        int c = 20;
        
        System.out.println(a<b | c>b);//true | true = true

        System.out.println(a<b || c++<b);//true | false = true
        System.out.println(c);
}

^ 逻辑异或 重点突出“异”,不同返回true

!逻辑非 相反

    public static void main(String[] args) {
        int a = 10;
        int b = 15;
        int c = 20;
        /*
        ^ 逻辑异或   重点突出就是 异  不同返回true
         */
        System.out.println(a<b ^ c<b);//true ^ false = true
        System.out.println(a<b ^ c>b);//true ^ true = false

        /*
          ! 逻辑非 相反
         */
        System.out.println(!true);
        System.out.println(!(a>b));


        int a1 = 10, b1 = 10, c1 = 10;
        boolean result = a1++ == 10 && b1-- == 10 || ++c1 ==100;
        System.out.println(result);

    }

条件运算符

结果 = (条件表达式)?结果1:结果2;

            当条件表达式结果为true时,返回?后的结果

            当条件表达式结果为false时,返回:后的结果

public static void main(String[] args) {
        int score = 60;
        String result = (score>=60)?"及格":"不及格";
        System.out.println(result);

        int a = 10;
        int b = 20;
        int max = (a>b)?a:b;
        System.out.println(max);
    }

位运算符(目前先做了解)

<<   >>   >>>   &     |     ^    ~

是对整数的二进制进行运算的

<< 左移 二进制的比特位向左移动 后面空缺的补0

>> 右移 二进制的比特位向右移动 带符号的移动:正数移动后,符号位补0,负数移动后,符号位补1

>>> 无符号右移,不管是正数还是负数,符号位统一补0,结果肯定为正数

public static void main(String[] args) {
        int a = 2;
        //  0000 0010
        //  0000 0100
        int b = a<<1;
        System.out.println(b);

        // 0000 1000
        // 0000 0100
        int c = 8;
        int d = c>>1;
        System.out.println(d);

        int x = 8;
        int y = x>>>1;
        System.out.println(y);//4

        int n = -8;
        int m = n>>1;
        System.out.println(m);

        int x1 = -8;
        int y1 = x1>>>1;
        System.out.println(y1);

    }

&   |   ^  既可以当作逻辑运算符,也可以当作位运算符

public static void main(String[] args) {
       int a = 5;
       int b = 4;
       /*
             0000 0101    5
             0000 0100    4      & 对位运算,11为1,其他0
             0000 0100    4
        */
       System.out.println(a & b);
       /*
           0000 0101  5
           0000 0100  4          | 对位  00->0 其他1
           0000 0101  5
        */
       System.out.println(a | b);

       int x = 4;
       int y = 5;
       /*
          0000 0100  4
          0000 0101  5          ^ 对位 相同为0,不同为1
          0000 0001  1
        */
       System.out.println(x ^ y);
}

~ 取反

public static void main(String[] args) {
       int x = 4;
       /*
       计算机中数值存储时,都用的补码存储的
       正数的补码 反码 原码 三码合一,
       负数以补码形式表示
       数值二进制为什么要用补码储存,因为计算机只能做加法  把减法 转换为加法
       3-2=1-->3+(-2)=1
       +3  0000 0011
       -2  1111 1110
           0000 0001

       2   0000 0001
           1111 1101  反码  +1
           1111 1110  -2的补码

       +5 0000 0101原码
          1111 1010反码
       -5 1111 1011补码  计算机只能做加法运算
       3-2 = 1      3+(-2) = 1

         0000 0100   4      ~  取反
         1111 1011  -5
        */
       System.out.println(~x);
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值