对Java语言中运算符的学习

逻辑运算符

逻辑运算符只能⽤于 boolean 类型的数据运算,判断 boolean 数据之间的逻辑关系,与、或、⾮。

&(与)、|(或)、!(⾮)、&&(短路与)、||(短路或)

与&

变量1 & 变量2:只有当变量 1 和变量 2 都为 true,结果为 true,否则为 false。

或|

变量1 | 变量2:变量 1 和变量 2 只要有⼀个为 true,结果为 true,否则为 false。

非!

!变量1:若变量 1 为 true,结果为 false,若变量 1 为 false,结果为 true。

异或^

变量相同为false,相反为true

短路与&&

只要符号左边为false,则右边表达式不再执行,直接返回false

短路或||

只要符号左边为true,则右边表达式不再执行,直接返回true

位运算符

&(按位与)、|(按位或)、^(按位异或)、 ~(按位取反) 、<<(左移)、 >>(右移) 、>>>(无符号右移位)

1.变量1 & 变量2:先把变量 1 和变量 2 转为⼆进制,每⼀位的数字⼀⼀对应,进⾏⽐较判断,若都为 1,则该位记做 1,否则记做 0。

2.变量1 | 变量2:先把变量 1 和变量 2 转为⼆进制,每⼀位的数字⼀⼀对应,进⾏⽐较判断,只要有⼀ 个为 1,则该位记做 1,否则记做 0。

3.变量1 ^ 变量2:先把变量 1 和变量 2 转为⼆进制,每⼀位的数字⼀⼀对应,进⾏⽐较判断,相同记做 0,不同记做 1。

4.<<(左移):左边最高数值位丢弃,右边空缺补0 :将要移动的数扩大2^n n:就是移动的位数1;就是将运算符的二进制码整体左移指定位数,左移之后的空位使用0来填充

5.>>(右移): 右移是将运算符的二进制整体右移,右移之后空出来的位置以符号位填充。如果是正数则使用0填充,如果是负数则使用1填充

6.>>>(无符号右移位) :是以0来填充空出来的位置

例题

把a与b的值进行交换

方法一 int a=1;
      int b=2;
      int c;
      c = a;
      a=b;
      b=c;
方法2   左边aba,右边a^b
       a=a^b;
       b=a^b;//b=a^b^b=a
       a=a^b;//a=a^b^a=b
方法3
        a=a+b;
        b=a-b;//b=a+b-b=a
        a=a-b;//a=a+b-a=b
      
方法4
        b=(a+b)-(a=b);

三目运算符

根据不同的条件给同⼀个变量赋不同的值,变量 = 条件?值1:值2.

int a=1;
int b=2;
int max;
max=(a<b) ?a:b;
System.out.println(max);
package org.wdit.unit01;

public class OperatorDemo {
    public static void main(String[] args){
        int x=3;
        int y=4;
        boolean flag;
        flag = (x == y);
        System.out.println("==:"+flag);
        flag = (x != y);
        System.out.println("!= :"+(flag));
    }

}

package org.wdit.unit01;

public class OperatorDemo2 {
    public static void main(String[] args){
        int a = 1;
        int b = 2;
        int c = 3;
        //& 有false,则false
        System.out.println((a > b) & (a < c));
        System.out.println((a > b) & (a > c));
        System.out.println((a < b) & (a < c));
        System.out.println((a < b) & (a > c));
        System.out.println("-----------------------------------");
        //|:有true,则true
        System.out.println((a>b)|(a<c));
        System.out.println((a>b)|(a>c));
        System.out.println((a<b)|(a<c));
        System.out.println((a<b)|(a>c));
        System.out.println("-------------------------------------");
        //!非
        System.out.println(!(a<b));
        //^:相同为false,相反为true
        System.out.println((a>b)^(a>c));
        System.out.println((a>b)^(a<c));
        System.out.println((a<b)^(a>c));
        System.out.println((a<b)^(a<c));

    }
}

package org.wdit.unit01;

public class OperatorDemo3 {
    public static void main(String[] args){
        int a=3;
        int b=4;
        int c=5;
        boolean flag = (++a==4)&&(++b==a);
        System.out.println("flag:"+flag);
        System.out.println("a:"+a);
        System.out.println("b:"+b);
    }
}
package org.wdit.unit01;

/**
 *交换数据
 */

public class OperatorDemo4 {
    //主方法
    public static void main(String[] args){
        //声明变量
        //方法一
        int a=1;
        int b=2;
//        int c;
//        c = a;
//        a=b;
//        b=c;
//        System.out.println(a);
//        System.out.println(b);

//        //方法2   左边aba,右边a^b
//        a=a^b;
//        b=a^b;//b=a^b^b=a
//        a=a^b;//a=a^b^a=b
//        System.out.println(a);
//        System.out.println(b);


//        //方法3
//        a=a+b;
//        b=a-b;//b=a+b-b=a
//        a=a-b;//a=a+b-a=b
//        System.out.println(a);
//        System.out.println(b);




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






    }
}

package org.wdit.unit01;

public class OperatorDemo5 {
    public static void main(String[] args){
        int a=1;
        int b=2;
        int max;
        max=(a<b) ?a:b;
        System.out.println(max);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值