夹哇基础知识总结part2(运算符)

Java中的运算符

(一) 算术运算符

算术运算符可分为:

双目运算符: ‘ + ’ , ‘ - ’ , ‘ * ’ , ‘ / ’ ,‘ % ’ .
单目运算符: ’ ++ ’ , ’ - - '.

首先,双目运算符中:

加减乘除这太简单了8,就不多说了,
最后一个‘%’读作“模”,表示取余数,例如:4%3 = 1,15%4 = 3.
它和除号“ / ”的使用方式比较特殊

用不同的的方式计算5除以2,观察他们的结果:

    public static void main(String[] args) {
        //用不同的方式计算5/2
        System.out.println(5/2);            //正常计算,但由于初始给定的值为int,所以计算结果也会默认为int。
        System.out.println(5.0/2);          //当参与的运算数中含有float,那么结果将会默认为float。
        System.out.println((float)5/2);     //将5强转为float后再除以2
        System.out.println((float)(5/2));   //将5/2的结果进行强转为float

	
        System.out.println(10%3);           //正常求余数,结果为1.
        System.out.println(-10%3);          //输出值为:-1
        System.out.println(10%-3);          //输出值为:1
        System.out.println(-10%-3);         //输出值为:-1

        System.out.println(5/0);            //报错,0不能再除数位置

    }

运行结果如下:
在这里插入图片描述

单目运算符中:

“++”是自增运算符,例如:num++ 等同于:num + 1;
“- - ”是自减运算符,例如:num- - 等同于:num - 1;
自增和自减运算符在使用时会涉及到一个前置自增后置自增(自减同理)的区分。

前置自增:num++
后置自增:++num

    public static void main(String[] args) {
        int a = 10;
        int b = ++a;                        //a = a + 1; b = a;
        System.out.println(b);              //前置自增返回值是自增之后的值
        int c = a++;                        //c = a; a = a + 1
        System.out.println(c);              //后置自增返回值是自增之前的值

        //注意有坑!!!!					
        int i = 10;
        i = i++;							
        System.out.println(i);				//输出的结果是:10
    }

结果:
在这里插入图片描述
这里为什么i = i++;的结果是10,并没有发生自增的操作呢?
这是因为java内部编译器的原因,通俗一点来解释:
我们可以把i++拆分成两个步骤:
(1)

t = i++;
i = t;

但是,其中的t = i++;又可以拆分成:

t = i;
i++;

因为啊,后置++是先返回值然后再进行++,所以这里赋值给 t 的还是 i 的初始值10;

(二)复合运算符

复合运算符:+= 、 -= 、 *= 、 /= .

用法:x += y;
表示的含义是,将 x+y 的值再重新赋值给x,-= 、 *=、/=同理

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
         a += b;
        System.out.println(a);              //-= *= /= 同理。
    }

结果:
在这里插入图片描述

(三)关系运算符

关系运算符:==、!=、<、>、<=、>=.

其中:

(1)==:判断两侧的值是否相等,相等返回true,否则返回false.
(2)!= :判断两侧值是否不相等,不等返回true,否则返回false.
(3) < :判断左侧值是否小于右侧的值,满足返回true,否则返回false.
(4) > :判断左侧值是否大于右侧的值,满足返回true,否则返回false.
(5)<=:判断左侧值是否小于或者等于右侧的值,满足返回true,否则返回false.
(6)>=:判断左侧值是否大于或者等于右侧的值,满足返回true,否则返回false.

关系运算符的返回结果都是boolean类型的,值只有true or false

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a<b);
        System.out.println(a>b);
        System.out.println(a<=b);
        System.out.println(a>=b);

        //上面这些输出结果都是true或者false
    }

结果:
在这里插入图片描述

(四)逻辑运算符

逻辑运算符:&& 、|| 、 !

逻辑运算符们的返回结果也是boolean类型,其值为:true or false

(1)逻辑与:&&

表达式1 && 表达式2 ; 当表达式1为或者表达式2为时,返回false,只要有一个为假,逻辑与就返回false,当左右两边两个表达式都为真(true)时,逻辑与才返回true,

(2)逻辑或:||

表达式1 || 表达式2 ; 当表达式1为或者表达式2为时,返回true,只要有一个为真逻辑或就返回true当左右两边两个表达式都为假(false)时,逻辑或才返回false,

逻辑与 和 逻辑或都遵循短路求值原则,即:

1、对于逻辑与:一旦表达式1为真,就没有必要判断表达式2了,肯定返回false,
2、对于逻辑或:一旦表达式1为假,就没有必要判断表达式2了,肯定返回true.

(3)逻辑非:!

! 表达式;返回的是与表达式所表示的布尔类型值相反,如果表达式判定为true,那么逻辑非返回false,如果表达式判定为false,那么逻辑非返回true.

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println(a < b && b < c);     //逻辑与,两真才为真
        System.out.println(a < b || b > c);     //逻辑或,有真就为真
        //短路求值规则
        System.out.println(10 > 20 && 10 / 0 == 0 );        //原本应该报算术异常,但由于表达式1已经为假,所以没有判断表达式2,所以就不会报错了
               
        //^按位异或(不一样的,进行或,一样的就是0)
        //~按位取反(将二进制按位取反)

        boolean flg = true;
        System.out.println(!flg);               //java中!运算符只能作用于boolean类型上
        System.out.println(!(a < b));

    }

output:
在这里插入图片描述

(五)条件运算符

条件运算符:…? … :…

条件运算符是一个三目运算符,

表达式1?表达式2:表达式3; 他所表示的含义是,判断表达式1的值,如果为真,则返回表达式2,如果为假,则返回表达式3.

public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;			//判断a大于b吗?大于返回a的值,否则返回b的值,该方法可用于求两个数的最大值。
        System.out.println(max);
    }

output:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值