算术运算符

算术运算符

算术运算符一元运算符++,--
二元运算符+,-,*,/,%

        1. +,-,*,/,% 属于二元运算符。其中,* 是数学中的乘号,/ 是除号,% 是取模运算符号,简单来说就是求余数的!

        2. ++,-- 属于一元运算符。++ 两个加号的表示自增,-- 两个减号的表示自减。

        3. 二元运算符和一元运算符,什么是二元或者一元?简单来说就是需要两个操作数的就是二元运算符,例如:1 + 1 = 2,+ 加号就需要两个操作数,一元运算符就只需要一个操作数即可。

二元运算符的运算规则

        整数运算

  • 如果两个操作数有其中一个是 long 长整数型,那么最后的结果也是 long 类型。
  • 如果两个操作数中都没有 long 类型时,那么最后的结果是 int (默认)。即使其它整数型,例如:全是 short,byte,最后的结果也是 int。
  • 两个整数相除,如果相除后有小数,则会把小数删除,返回一个整数。

整数运算的代码示例

/**
* 测试二元运算符的整数运算规则
*/
public class TestOperator01{

    public static void main(String[] args){
        // 有一个操作数 a 是 long 型,最后结果也是 long 型
        long a = 1;
        int b = 2;
        System.out.println(a + b); // 打印结果:3

        // (排除 long 型)即使两个操作数全是 short 类型,最后默认也是 int 型
        short num1 = 5;
        short num2 = 10;
        System.out.println(num1 + num2); // 打印结果:15

        // 整数相除如果有小数,则会把小数删除,返回前面的整数
        int val = 5;
        int val2 = 2;
        System.out.println(val / val2); // 打印结果:2,不是2.5

    }


}

        浮点数运算

  • 如果两个操作数有一个是 double 类型,那么最后的结果也是 double 类型。
  • 只有当两个操作数都是 float 类型,结果才是 float。
  • 不要进行浮点数的比较,浮点数存在舍入误差,数字不能精确的表示!

        浮点运算和整数运算类似,这里就不进行代码演示啦!

        取模运算

  • 取模运算的两个操作数可以是整数,也可以是浮点数,但是一般使用的是整数,取模运算的结果是 "余数"。
  • 最后结果的 "余数" 符号是和左边操作数相同的,例如:5%2=1,-5%2=-1,5%-2=1。

老李说明:

        在上述的整数运算和浮点数运算中,以整数运算为例,总是说操作数中有 long ,结果就是long,没有 long ,即使全是 byte 和 short ,结果也是 int,这是为什么?其实这是java语言的自动转型,前面我们了解过了,知道 long 类型是8个字节,int 是4个字节,short 是2个字节,byte 是1个字节,当操作数中出现较大类型的时候,最后结果就会以最大的类型为准。简单来说,容量小的数据类型可以自动转换为容量大的数据类型,即自动类型转换。此外,还有强制类型转换,关于类型转换问题我们以后进行详细讲解!

一元运算符 ++(自增)和 --(自减)

        1. 只需要一个操作数的运算符。

        2. 细节说明:num++ 和 ++num 是不同的(这里的 num 是一个变量),num++ 是先赋值,再自增。++num 是先自增,再赋值,同理 num-- 和 --num 也是不同的。我们以实际代码来说明这个细节。

一元运算符的代码示例

/**
* 测试一元运算符 ++(自增)和 --(自减)
*/
public class TestOperator02{

    public static void main(String[] args){
        // a++:先赋值,再自增
        int a = 1;
        int b = a++; // 运行后,b=1。先给b赋值即a=1,所以b=1,再自增a++,a=a+1,即a=2
        System.out.println("a="+a+"\nb="+b); // 打印结果:a=2 b=1 

        // ++num1:先自增,再赋值
        int num1 = 1;
        int num2 = ++num1; /* 运行后,num2=2。num1先自增,num1=num1+1,即num1=2,再给num2赋值,即num2=2 */
        System.out.println("num1="+num1+"\nnum2="+num2); // 打印结果:num1=2 num2=2

        // val--:先赋值,再自减 与上述 a++ 道理类似
        int val = 2;
        int val2 = val--;
        System.out.println("val="+val+"\nval2="+val2); // 打印结果:val=1 val2=2
        
        // --val3:先自减,再赋值 与上述 ++num1 道理类似
        int val3 = 2;
        int val4 = --val3;
        System.out.println("val3="+val3+"\nval4="+val4); // 打印结果:val3=1 val4=1

    }


}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lsj-happiness

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

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

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

打赏作者

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

抵扣说明:

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

余额充值