阿里云大学 Java编程入门(六)Java运算符


本系列内容为阿里云大学 java学习路线里的内容
阿里云大学 java学习路线传送门.

六、Java运算符

6.1、运算符简介

所有程序开发都是一种数字处理的游戏,那么对于数字的处理一定会有所谓的操作符。

对于程序开发而言,会提供有大量的基础运算符,那么这些运算符也都会提供各自的优先顺序,不建议取记优先级。可以加括号,括号优先级最高。

在这里插入图片描述

对于程序开发而言,个人不建议编写太复杂的运算。

public class test {
    public static void main(String args[]) {
        int x = 10 ;
        int y = 20 ;
        int result = x -- + y++ * -- y / x / y * ++ x - --y + y ++ ;
        System.out.println(result) ;
    }
}

Output:
30

如果在项目代码里按这样逻辑写了代码,会被骂,写简单易懂的代码。

6.2、数学运算符

在Java中数学运算都提供标准支持,包括四则运算等。

实现简单的四则运算

public class test {
    public static void main(String args[]) {
        int result = 10;
        result = result + 20;
        System.out.println(result);
    }
}

Output:
30

支持简化运算符(+= -= *= /= %=)

public class test {
    public static void main(String args[]) {
        int result = 10;
        result += 20;
        System.out.println(result);
    }
}

Output:
30

结果一样

最头疼的是"++" “–”,有两类使用方法

  • ++变量:先自增/减,再运算
  • 变量++:先运算,再自增减
public class test {
    public static void main(String args[]) {
        int x = 10;
        int y = 20;
        int result = ++ x - y --;
        // 1、++ x:首先x的内容要先自增1,为11;
        // 2、y --:先进行计算,使用的内容是20,计算完成后自减
        System.out.println("计算结果:" + result);  //-9
        System.out.println("x=" + x);              //11
        System.out.println("y=" + y);              //19
    }
}

Output:
计算结果:-9
x=11
y=19

这是当初内存量不大时用的,现在不建议这么写,如果要写可以考虑分开。

public class test {
    public static void main(String args[]) {
        int x = 10 ;
        int y = 20 ;
        ++ x ;
        int result = x - y;
        y -- ;
        System.out.println("计算结果:" + result) ;	 // -9
        System.out.println("x = " + x) ;	// 11
        System.out.println("y = " + y) ;	// 19
    }
}

Output:
计算结果:-9
x=11
y=19

6.3、关系运算符

主要特征是大小的处理:> , < , >= , <=,!=, ==。所有的关系运算返回的结果都是布尔类型。

在关系判断时,特别注意相等的判断问题。在Java里,=表示赋值,内容的比较用==

public class test {
    public static void main(String args[]) {
        int x = 10 ;
        int y = 20 ;
        boolean flag = x > y ;	// false
        System.out.println(flag) ;
    }
}

Output:
false
public class test {
    public static void main(String args[]) {
        int x = 10 ;
        int y = 10 ;
        boolean flag = x == y ;	// true
        System.out.println(flag) ;
    }
}

Output:
true
public class test {
    public static void main(String args[]) {
        char c = '建';
        System.out.println((int)c);    //24314
    }
}

Output:
24314
public class test {
    public static void main(String args[]) {
        char c = '建' ;
        boolean flag = 24314 == c ;	// true
        System.out.println(flag) ;
    }
}

Output:
true

6.4、三目(赋值)运算符

在程序开发中,三目运算用的比较多,合理的使用可以避免一些大范围的程序编写。 是一种设置逻辑关系的判断后才可进行赋值的操作。

关系运算符 ? 满足时的运算:不满足时的运算

比较两个大小,来返回max

public class test {
    public static void main(String args[]) {
        int x = 10 ;
        int y = 20 ;
        // 判断x与y的大小关系来决定最终max变量的内容
        int max = x > y ? x : y ;
        System.out.println(max) ;
    }
}

Output:
20
传统方法:
public class test {
    public static void main(String args[]) {
        int x = 10 ;
        int y = 20 ;
        // 判断x与y的大小关系来决定最终max变量的内容
        int max = 0 ;
        if (x > y) {
            max = x ;
        } else {
            max = y ;
        }
        System.out.println(max) ;
    }
}

Output:
20

代码长

三目运算允许嵌套,但是可读性差

public class test {
    public static void main(String args[]) {
        int x = 10 ;
        int y = 20 ;
        int z = 15 ;
        int max = x > y ? (x > z ? x : z) : (y > z ? y : z) ;
        System.out.println(max) ;
    }
}

Output:
20

根据实际情况决定是否使用

6.5、位运算

指可以直接进行二进制数据的计算处理,主要有与(&) 或(|) 异或(^) 取反(~) 移位处理(>> <<)

10进制–>2进制,处以2取余
在这里插入图片描述

1 2 4 8 16

1 0 1 1

观察与操作 &、|

&:如果两位都是 1 结果才是 1 ,如果一位是 0 结果就是 0
|:如果有一位是 1 结果就是 1 ,如果两位是 0 结果才是 0

public class test {
    public static void main(String args[]) {
        int x =13;
        int y =7;
        System.out.println(x&y);
        System.out.println(x|y);
    }
}

Output:
5
15

13的二进制:00001101
7的二进制:00000111
&的运算:00000101
|的运算:00001111

移位有乘除属性,求2的3次方

public class test {
    public static void main(String args[]) {
        int x = 2 ;
        System.out.println(x << 2) ;
        System.out.println(x) ;
    }
}

Output:
8
2

2的二进制:00000010

向左移两位:00001000

之前在内存有限时,很少有人使用移位来操作乘除

Q: 请解释& 和 && ,| 和 ||的区别

& 和 | 两个运算符可以进行位运算与逻辑运算:

在进行逻辑运算时所有的判断条件都要执行 在进行位运算时只针对当前的数据进行与和或处理 在逻辑运算上还可以使用&& , ||

&&:在若干个条件判断,如果前面返回false,后续条件都不执行和判断

在进行位运算时只针对当前的数据进行与和或处理

||: 在在若干个条件判断,如果前面返回true,后续条件都不执行和判断

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crazy_Hengji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值