妙用运算符,敲出高大上

运算符,处理数据的核心逻辑结构,大致可分为:赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、括号运算符等。今天就来教小伙伴们如何巧妙且恰当地使用运算符,让你的代码看上去也像大佬们写的那样,有点B格。

妙 · 赋值运算符

在编程世界里,等于号(=),它不再是我们熟悉的等于号,而是 赋值符号 ,等等,灯光对错人了,这里我们要说的是这个 三目运算符 ,属于一种简化的赋值运算符,利用运算动态选择 ,合理运用可以减少很多简单的判断逻辑代码。

公式:数据类型 变量 = 逻辑判断 ? 逻辑成立选择的值 : 逻辑不成立选择的值

比如:用三目运算符简化一个简单的 if 语句(目的:把 a 、 b 中的最大值赋值给 c )

        int a = 10;
        int b = 5;
        //用 if 语句
        if (a > b) {
            int c = a;
        } else {
            int c = b;
        }
        //三目运算符
        int c = a > b ? a : b;

这种一步到位的感觉不得不让我想起某电池广告词:一行更比六行强!

妙 · 算术运算符

算术运算符大家都知道:加(+)减(-)乘(*)除(/)还有取模(取余数:%)

比如想要让一个 int 数值增大 2 :

int a = 100;
a = a + 2;

那么这种情况,可以简写成:

int a = 100;
a += 2;

代码的B格是不是提高了那么一丢丢?

这是利用了 算术运算符+赋值运算符,其他的几个算术运算符也可以同理:

int a = 100;
a += 2;// a = a + 2;
a -= 2;// a = a - 2;
a /= 2;// a = a / 2;
a *= 2;// a = a * 2;
a %= 2;// a = a % 2;

妙·逻辑运算符

逻辑运算符包括:与(&) 、短路与(&&) 、 或(|) 、 短路或(||)、非(!)

与(&):逻辑条件全都为 true 时,才会返回 true ,否则返回 false

短路与(&):逐个判断逻辑条件,遇到第一个 false 时直接返回 false ,不会进行后面的判断和运算,所有逻辑条件都为 true 时才会返回 true

或(|):逻辑条件全都为 false 时,才会返回 false,否则返回 true

短路或(||):逐个判断逻辑条件,遇到第一个 true 时直接返回 true,不会进行后面的判断和运算,所有逻辑条件都为 false 时才会返回 false

用法如下:

比如我们想要用 if 语句判断一个人即是 男性 又是 30岁以下:

        String sex = "男";
        int age = 20;
        if (sex.equals("男")) {
            if (age <= 30) {
                System.out.println("if嵌套结果:此人为男性!");
            }
        }

        if (sex.equals("男") & age <= 30) {
            System.out.println("逻辑运算符结果:此人为男性!");
        }

可以看到,同样是用 if 语句,如果使用了 逻辑运算符 与(&) 的话,代码瞬间就变得更加清晰明朗,并且有更好的执行性能。

短路与(&&)的小妙用:

很多时候我们需要对某个变量或者对象先进行判空操作,再去做某些东西操作或者判定,这个时候短路与的优势一下子就出来了!

        String str = "abc";
        if (str != null) {
            if (str.equals("abc")) {
                str = "666";
            }
        }

        if (str != null && str.equals("abc")) {
            str = "666";
        }

可以看到,在需要先判断 str 不为空的情况下判断 str 是否等于 “abc” ,可以把往常的两个 if 缩减成一个!

短不短路的区别:

短路与(或)和 普通与(或)有什么区别呢?(或 和 短路或 同理)

        //输出结果:抛出异常
        System.out.println(5 < 1 & 1 / 0 == 0);

        //输出结果:false
        System.out.println(5 < 1 && 1 / 0 == 0);

可以看到, 5<1 结果是 false 1/0 结果是 抛出异常(0不能作为除数)

同样的两个判断条件,一个用的是 与(&),一个用的是 短路与(&),结果就完全不一样了!

原创文章 50 获赞 334 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_44720366/article/details/105538662