美文网首页
java运算符01_运算符(上)

java运算符01_运算符(上)

作者: 武汉尚学堂 | 来源:发表于2020-02-26 18:25 被阅读0次

    1.赋值运算符

    =,把等号右边表达式的结果赋值给等号左边的变量或final修饰的常量。

    【随堂练习】

    1、交换两个变量的值(用两种方式实现)。

    方案一:定义一个零时变量来实现

    public class OperatorDemo {
        public static void main(String[] args) {
            int num1 = 3, num2 = 5;
            // 方案一:定义一个零时变量来实现
            int temp = num1;
            num1 = num2;
            num2 = temp;
            // 交换之后:num1 = 5, num2 = 3
            System.out.println("num1 = " + num1 + " num2 = " + num2);
        }
    }
    

    该方式的优点:特别好理解,缺点:需要定义零时变量,浪费内存空间。

    方案二:一加两减。

    public class OperatorDemo {
        public static void main(String[] args) {
            int num1 = 3, num2 = 5;
            // 方案二:一加两减。
            num1 = num1 + num2; // num1 = 8
            num2 = num1 - num2; // num2 = 3
            num1 = num1 - num2; // num1 = 5
            // 交换之后:num1 = 5, num2 = 3
            System.out.println("num1 = " + num1 + " num2 = " + num2);
        }
    }
    

    该方式的优点:无需定义零时变量,节约内存空间,缺点:不太好理解。

    2.算数运算符

    算数运算符可分为:一元运算符和二元运算符

    • 二元运算符,需要两个操作数参与运算。

    • 一元运算符,只需要一个操作数参与运算。

    2.1一元运算符

    只需要一个操作数的运算符称为一元运算符,如++,-- 等。

    ++ 自增运算符

    num++++num,都等价于num = num + 1

    num++++num的区别:

    • ++num 先自增,后参与运算

    • num++ 先参与运算,后自增

    -- 自减运算符

    num----num,都等价于num = num - 1

    num----num的区别

    • --num 先自减,后参加运算

    • num-- 先参与运算,后自减

    【思考】

    1、可以对常量进行递增或递减操作吗?例如:5++或++5。

    【随堂练习】

    1、int a = 3, b = 4; 求a++ / 3 + --b * 2 - a-- % 6 + b++ * 3 - ++b的值。

    【经典面试题】

    1、int num = 5; num = num++;请问代码执行后num的值为多少?

    分析:很多学生以为num的结果为6,实际上num的结果为5,接下来我就给大家分析一下此题。

    “num = num++;”底层操作
        第一步:定义一个零时变量,用于保存num的值。
              int temp = num; --> temp = 5;
        第二步:执行num的自增操作,也就是执行num++操作
              num = num + 1;    --> num = 6;
        --------------以上两步执行的是等号有边的操作-------------
        --------------最后一步,执行的是赋值操作-------------
        第三步:把零时变量的值赋值给等号左边的num。
              num = temp;   --> num = 5;
    

    2.2二元运算符

    二元运算符指的是需要两个操作数才能完成运算的运算符,例如:+,-,*,/,%。

    +,加法运算,连接符操作,还可以表示正数。

    -,减法运算,还可以表示负数。

    *,乘法运算

    /,除法运算

    %,取模运算或取余运算,获得两个数相除的余数。

    取模运算示例:

    0 % 3,结果为:0 --> 强调,零模任何一个数,结果都为零。
    1 % 3,结果为:1
    2 % 3,结果为:2
    3 % 3,结果为:0
    4 % 3,结果为:1
    

    取模运算的使用场合:判断m是否能被n整除:

    • 如果m能被n整除,则m%n的结果为零。

    • 如果m不能被n整除,则m%n的结果不为零。

    【注意事项】

    1. 两个整数做除法运算,返回的结果肯定是一个整数。

    2. 两个数做除法运算,分母不允许为零,否则抛出算数异常。

    【随堂练习】

    1、获取整数987的百位数、十位数和个位数。

    public class OperatorDemo {
        public static void main(String[] args) {
            // 2、获取整数987的百位数、十位数和个位数。
            int num = 987;
            // 个位数,7
            int bit1 = num % 10;
            System.out.println("个位数:" + bit1);
            // 十位数,8
            // 方案一:先获得98,然后再获得8
            // int bit2 = num / 10 % 10;
            // 方案二:先获得87,然后再获得8
            int bit2 = num % 100 / 10;
            System.out.println("十位数:" + bit2);
            // 百位数,9
            int bit3 = num / 100;
            System.out.println("百位数:" + bit3);
        }
    }
    

    3.扩展赋值运算符

    扩展赋值运算符:是算术运算符和赋值运算符结合。

    运算符 用法举例 等效的表达式
    += a += b a = a+b
    -= a -= b a = a-b
    *= a *= b a = a*b
    /= a /= b a = a/b
    %= a %= b a = a%b

    【随堂练习】

    1、获取三个学生的成绩,并计算三个学生成绩的平均分。

    【常见面试题】

    1、int num = 3; num *= 2 + 3; 请问num的结果为多少?

    分析:很多同学认为num *= 2 + 3;等效于num = num*2 + 3,所以认为num的结果为9。

    ​ 而实际上,num *= 2 + 3;等效于num = num*(2 + 3),所以num正确的结果是15。

    2、short num = 11; num = num + 1;short num = 11; num += 1;哪一个正确呢?

    分析:short num = 11; num = num + 1;语法错误,因为num + 1的结果为int类型。
    short num = 11; num += 1;语法正确,因为num += 1;等效于num = (short)(num + 1);

    3、int sum += 30; 请问这行语句语法是否正确???

    分析:int sum += 30; 等效于int sum; sum += 30;,num只声明未赋值,无法参与算数运算,所以该语句语法错误。

    4.关系运算符

    关系运算符用来进行比较运算,关系运算符的运算结果是boolean类型。条件成立,则返回true。条件不成立,则返回false。。

    、 <、>=、<=、==、!=

    ==(相同):比较左右两边的数值是否相同。相同则返回true,否则返回false。

    !=(不相同):比较左右两边的数值是否不相同。不相同则返回true,相同则返回false。

    注意事项:

    1、请问以下代码执行的结果是什么???

    boolean flag = false;
    if(flag = true) { 
        System.out.println("flag等于true");  // 此行语句输出
    }
    else {
        System.out.println("flag等于false");  
    }   
    

    注意:在if的条件表达式中,”flag = true“做了赋值操作,而不是比较操作。

    建议:常量放在”==“的左边,变量放在”==“的右边。

    好处:如果“==”误写为“=”,那么问题就提前暴露在编译时,避免把问题暴露在运行时。

    ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

    相关文章

      网友评论

          本文标题:java运算符01_运算符(上)

          本文链接:https://www.haomeiwen.com/subject/bphichtx.html