Java基础知识学习:操作符(运算符)

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

操作符介绍

  1. 在最底层,Java中的数据是通过使用操作符来操作的
  2. 操作符接收一个或多个参数,并生成一个新值.参数的形式与普通方法的调用不同,但是效果是相同的.操作符作用于操作数,生成一个新值,有些操作符可能会改变操作数自身的值,这被称为"副作用"
  3. 操作符分类
      在这里插入图片描述

算术操作符

  1. 算术运算符中+,-,*,/,%属于二元运算符,二元运算符指的是需要两个操作数才能完成运算的运算符。其中,整数除法会直接去掉结果的小数位,%是取模运算符,就是我们常说的求余数操作
  2. 二元运算符运算规则:
      在这里插入图片描述
  3. 算术运算符中++(自增),–(自减)属于一元运算符,该类运算符只需要一个操作数。自增自减操作符这种快捷运算使编码更方便.有个小故事,在一个关于Java的演讲中,Bill Joy(Java创始人之一)声称"Java=C+±-"意味着Java已去除了C++中一些很困那而有没有必要的东西,成为了一种更加精简的语言.
  4. 一元操作符运算规则:
      在这里插入图片描述
      在这里插入图片描述

赋值操作符

  1. 最常见的赋值操作符就是"=",意为将等号右边数的值赋值给左边
  2. 扩展赋值操作符运算规则
      在这里插入图片描述
  3. 赋值运算符案例
      在这里插入图片描述

关系操作符

  1. 关系操作符生成的是一个boolean结果,他们计算的是操作数的值之间的关系.如果关系是真实的,关系表达式会生成true,反之为false.
  2. 关系运算符中等于和不等于适用于所有的基本数据类型,而其他比较符不适用于boolean类型.
  3. 关系运算符一览
      在这里插入图片描述
  4. 扩展点:(看不懂可以跳过)
      请大家看以下代码,想一下输出是啥?
      在这里插入图片描述
      有的可能认为两个值都是47,所以认为是true,false
      在这里插入图片描述
      这就涉及到比较两个对象的实际内容是否相同了,此时必须使用所有对象都适用的特殊方法equals(),但是这个方法不适用于基本数据类型,基本类型直接用==和!=即可
      在这里插入图片描述
      再比如,我这里自己创建了一个新的类,然后用equals进行比较呢?
      在这里插入图片描述
      如果你认为结果是true,那就错了哦
      在这里插入图片描述
      这是因为equals方法的默认行为是比较引用.而之前的Integer类已经对equals方法进行了覆写,所以除非在自己创建的类中覆盖equals方法,否则不可能表现希望的结果

逻辑操作符

  1. 逻辑操作符能根据参数的逻辑关系,生成一个布尔值(true或false)
  2. 短路:使用逻辑操作符时,会遇到一种短路现象.即一旦明确无误地确定整个表达式的值,就不再计算表达式余下部分了,这将获取潜在的性能提升
  3. 逻辑操作符一览表
      在这里插入图片描述
  4. 短路案例
      在这里插入图片描述

按位操作符

  1. 按位操作符用来操作整数基本数据类型中的单个"比特"(bit),即二进制位,按位操作符会对两个参数中对应位执行布尔代数运算,并最终生成一个结果.
  2. 按位操作符一览
      在这里插入图片描述
  3. 移位运算符:只能够用来处理整数类型(基本类型一种)
      在这里插入图片描述
  4. &和|既是逻辑运算符,也是位运算符。如果两侧操作数都是 boolean 类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。

条件操作符(也称三元操作符)

  1. 它有三个操作数,但它确实属于操作符的一种,最终也会生成一个值.
  2. 表达式形式:boolean-exp?value0:value1 (如果boolean-exp的结果为true,就计算value0,而且这个计算结果就是操作符最终产生的值.如果boolean-exp的结果为false,就计算value1.)
  3. 案例
      在这里插入图片描述

字符串操作符+和+=

  1. 特殊用途:连接不同的字符串
  2. 案例:
      在这里插入图片描述
      第一个打印语句输出的是012而不是3,之所以这样,是因为Java编译器会将x,y和z转换成他们的字符串形式,然后连接这些字符串,而不是先把它们加到一起.
      第二个打印语句会先计算x+z的值,然后进行字符串拼接
      第三个打印语句中的s提前进行了拼接操作,然后使用了括号来控制表达式的赋值顺序,使得int类型变量在显示之前进行了求和操作
      最后一个打印语句在今后某些地方还是挺常见的,空的字符串+一个基本类型变量,这样的话就可以自动转为String类型,这样就没必要去调用更麻烦的显式方法(Integer.toString)

操作符优先级问题

  1. 一览表
      在这里插入图片描述
  2. 注意点:表达式里面优先使用小括号来组织,逻辑非(!)>逻辑与(&&)>逻辑或(||)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值