首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java】基础09:运算符

【Java】基础09:运算符

作者头像
刘小爱
发布2020-07-30 15:57:56
3140
发布2020-07-30 15:57:56
举报
文章被收录于专栏:零基础自学Java零基础自学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时,不及格。

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

这就需要三元运算符了。

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

总结

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 刘小爱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、算数运算符
  • 二、赋值运算符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档