【Java】基础09:Java里的五类运算符

加减乘除,这是我们小学就学过的数学运算。

那么在程序里又有哪些运算呢?

一、算数运算符
  • 加法运算:+(若是字符串连接运算)

  • 减法运算:-

  • 乘法运算:*

  • 除法运算:/

  • 取模运算:%(两个数字相除取余数)

  • 自增自减运算:++、- -

这些加减乘除取模其实就和小学数学学到的功能是差不多的。

昨天的学习中做过测试:

知道了byte、short、char类型,它们在运算时会自动转换为int。

那如果是int和double类型的呢?

测试:

double d=100;
int i=10;
// int i2=d1+i1;//错误: 不兼容的类型: 从double转换到int可能会有损失
double i2=d1+i1;

在这里插入图片描述
从中我们就能看到,一个int类型的数和一个double类型的数相加时,会变成double类型。

原来当算术运算两侧的类型不一致的时候,结果和大类型保持一致

++、-- 运算符

++运算,变量自增长1;- -运算,变量自减少1。

那么如果有一个变量i,++i和i++有什么区别呢?

独立运算时:i++和++i没有区别,都是实现自动加1的功能

混合运算时:i++和++i就不同了

1.++/- -在先,先运算后取值

int i1 = 1;
int i2 = ++i1;
System.out.println(i1);//计算结果是2
System.out.println(i2);//计算结果是2

2.++/–在后,后运算先取值

int i1 = 1;
int i2 = i1++;//这就等价于 int i2=i1;i1=i1+1;
System.out.println(i1);//计算结果是2
System.out.println(i2);//计算结果是1

后++/- -时,就相当于变量i1先把值赋给i2,再自增1;

字符串之间进行+运算时,是拼接操作
在这里插入图片描述

为何得出的结果是1+1=11?

因为“1+1=”这是一个字符串,它在与后面的1运算时是拼接运算的。

那如何让其显示出正确的答案呢?

用括号提高后面1+1的运算优先级就好了。

在这里插入图片描述

二、赋值运算符
  • 等于号:=(用于给变量赋值)
  • 加等于:+=
  • 减等于:-=
  • 乘等于:*=
  • 除等于:/=
  • 取模等于:%=

+= ,-=,*=,/=,%=

运算符和赋值符的结合使用,变量自身参与运算,结果赋值返回给自身

int i=10;
i1=i+10;//这行就可以写成i+=10,
System.out.println(i);

+= ,-=,*=,/=,%=:自动类型强转功能

赋值运算符在运算过程中,若是涉及到值强转,会自动操作

byte b=1;
b+=256;//可以理解成byte b = (byte)257
System.out.println(b)//所以值为1而不是257,int类型被强转成byte了

int i=10;
i+=3.14;//可以理解成int i =(int)13.14
System.out.println(i)//所以值为13而不是13.14,double类型被强转了
三、比较运算符
  • 等等于:==(如果判断正确结果为true)
  • 小于号:<
  • 大于号:>
  • 小于等于:<=
  • 大于等于:>=
  • 不等于:!=

比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false

public static void main(String[] args) {
    System.out.println(1==1);//true
    System.out.println(1<2);//true
    System.out.println(3>4);//false
    System.out.println(3<=4);//true
    System.out.println(3>=4);//false
    System.out.println(3!=4);//true
}
四、逻辑运算符
  • 双与:&&(全真才是真)
  • 单与:&(全真才是真)
  • 双或:||(全假才是假)
  • 单或:|(全假才是假)
  • 取反:!

其实也就是数学里面学到的逻辑运算:与、或、非

    //逻辑与&&(并且) 一假即假,全真才是真
    System.out.println(true && true);//true
    System.out.println(true && false);//false
    System.out.println(false && true);//false,右边不计算
      //逻辑或||(或者)一真即真,全假才是假
    System.out.println(false || false);//falase
    System.out.println(false || true);//true
    System.out.println(true || false);//true,右边不计算
        //逻辑非!(不是)
    System.out.println(!false);//true

那么&&与&有何区别呢?

做个测试:
在这里插入图片描述
在这里插入图片描述

小结:

  • 双与:一假即假,若前面为假,后面不用运算
  • 单与:一假即假,无论结果是啥,都会运算完
  • 双或:一真即真,若前面为真,后面不用运算
  • 但或,一真即真,无论结果是啥,都会运算完
五、三元运算符

我们都接触过考试,一般都是60分及格。

也就是说分数大于或等于60时,及格;分数小于60时,不及格。

这种在生活中常见的情况在程序里是如何表现的的?

这就需要三元运算符了。

当一个布尔表达式的结果分别对应两种情况时,可以使用三元表达式。

在这里插入图片描述

总结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘小爱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值