Java运算符

逻辑运算符

逻辑运算符包括:& &&(并且) | ||(或者) !(取反) ^(异或)

其运算结果都是布尔类型即true或false

&:两端都是true,则结果为true;只要有一端为false则为false

|:两段的表达式只要有一端为true其结果就为true,只有当两端都为false时才是false

!:取反,即false变true,true变false

^:相同为true,不同为false

其大概用法如下:

public class MyTest {
    public static void main(String[] args) {
        int a=10;
        int b=30;
        boolean flag=a>b&a<b;
        System.out.println(flag);
        boolean flag1=a>b|a<b;
        System.out.println(flag1);
        System.out.println(!true);
        System.out.println(!false);
        System.out.println(true^true);
        System.out.println(false^false);
        System.out.println(true^false);
    }
}

**& &&与| || **的区别:

二者的运算结果是没有区别的,但是单个逻辑运算符两边的表达式都会运行,但是两个运算符在一起时在某些情况下右端的表达式就不会执行;

&&当左端为false时,右端的表达式就不会执行;||左端为true时,右端的表达式就不会执行

位运算符

直接对二进制补码进行运算,运算效率高

位运算符有:&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)

&:把给定的数字转成补码进行运算,“有0则0”原则

eg: 0 0000011

​ 0 0000100

& “有0则0”


​ 0 0000000

|:也是对给定数字的补码进行运算,但原则是“有1则1”,类比上述例子;

^:对给定数字的补码进行运算,原则是“相同则0,不同则1”

~:按位取反,0变1,1变0,符号位也包括在内进行取反

eg:~9:

原码:00001001
反码:00001001
补码:00001001

​ “0变1,1变0”

按位取反 :1 1110110 补码

再推回原码
1 1110110 补码

​ -1


​ 1 1110101 反码

取反

​ 1 0001010 原码 为-10

<< (左移)空位补0 >> (右移) 正数补0负数补1;>>>(无符号右移) 空位都补0不管正负;

有几个结论可以直接记下来用:

  1. 一个数被另一个数位异或两次,该数不变;
  2. 一个数与自己本身位异或结果为0;
  3. <<:把<<左边的数据乘以2的移动次幂;比如:10<<3就等于10×2^3=80;
  4. 而>>:把>>左边的数据除以2的移动次幂;比如40>>3就等于40÷(2^3) =5;

如何进行值交换

值交换的思想比较重要,会在今后的学习中经常遇到

我们掌握使用其中一种就好,下面介绍采用中间变量的方法来进行值交换

我们用具体代码来说明:

public class MyTest2 {
    public static void main(String[] args) {
        int a=20;
        int b=50;
        int t;//创建一个中间变量
        t=a;//将a的值先赋给t,暂时存储起来
        a=b;//此时a的值你可以理解为空的,这时将b的值赋给a
        b=t;//b的值赋给a后b也变为“空的”,这时将a存储在t中的值赋给b实现值交换
        System.out.println(a);
        System.out.println(b);

    }
}

三目元算符

其表达形式是:表达式?结果1:结果2

当表达式为true时,返回结果1;当表达式为false时,返回结果2

用代码来简单应用一下:

public class MyTest3 {
    public static void main(String[] args) {
        int a=10;
        int b=30;
        int max=a>b?a:b;
        System.out.println(max);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值