Java运算符按功能可分为:算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符。

算数运算符

算术运算符包括通常的加(+)、减(-)、乘(*)、除(/)、取模(%),完成整数型和浮点型数据的算术运算。

许多语言中的取模运算只能用于整数型,Java对此做了扩展,它允许对浮点数进行取模操作。例如,3%2 的结果是 1, 15.2%5 的结果是 0.2。取模操作还可以用于负数,结果的符号与第一个操作数的符号相同,例如,5%-3 的结果是 2,-5%3 的结果是-2。

此外,算术运算符还有“++”和“--”两种,分别称为加1和减1运算符。这两种运算符有前缀形式和后缀形式,含有有所不同。例如,i++ 和 ++i 的执行顺序是不一样的,i++ 在 i 使用之后再 +1,++i 在 i 使用之前先 +1。i-- 和 --i 的情况于此类似。

关系运算符

关系运算符用来比较两个值,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)6种。关系运算符都是二元运算符,也就是每个运算符都带有两个操作数,运算的结果是一个逻辑值。Java允许“==”和“!=”两种运算符用于任何数据类型。例如,既可以判断两个数的值是否相等,也可以判断对象或数组的实例是否相等。判断实例时比较的是两个对象在内存中的引用地址是否相等。

逻辑运算符

逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。前两个是二元运算符,后一个是一元运算符。Java对逻辑与和逻辑或提供“短路”功能,也就是在进行运算时,先计算运算符左侧的表达式的值,如果使用该值能得到整个表达式的值,则跳过运算符右侧表达式的计算,否则计算运算符右侧表达式,并得到整个表达式的值。

位运算符

位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。位运算符只能对整数型和字符型数据进行操作。

1. 取反(~)

参加运算的一个数据,按二进制位进行“取反”运算。

运算规则:~1=0; ~0=1;

即:对一个二进制数按位取反,即将0变1,1变0。

2. 按位与(&)

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;即:两位同时为“1,结果才为“1,否则为0。

例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3 & 5的值得1。

3. 按位或(|)

参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0 | 0=0; 0 | 1=1; 1 | 0=1; 1 | 1=1;

即 :参加运算的两个对象只要有一个为1,其值为1。

例如:3 | 5,即 0000 0011 | 0000 0101 = 0000 0111 因此,3 | 5的值得7。

4. 异或(^)

参加运算的两个数据,按二进制位进行“异或”运算。

运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;

即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

5. 左移(<<)

运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。例如: 12345 << 1,则是将数字12345左移1位:

位移后十进制数值变成:24690,刚好是12345的二倍,所以有些人会用左位移运算符代替乘2的操作,但是这并不代表是真的就是乘以2,很多时候,我们可以这样使用,但是一定要知道,位移运算符很多时候可以代替乘2操作,但是这个并不代表两者是一样的。

思考一下:如果任意一个十进制的数左位移32位,右边补位32个0,十进制岂不是都是0了?当然不是!!! 当int 类型的数据进行左移的时候,当左移的位数大于等于32位的时候,位数会先求余数,然后再进行左移,也就是说,如果真的左移32位 12345 << 32 的时候,会先进行位数求余数,即为 12345<<(32%32) 相当于 12345<< 0 ,所以12345<< 33 的值和12345<<1 是一样的,都是 24690。

6. 右移(>>)

同样,还是以12345这个数值为例,12345右移1位: 12345>>1。

右移后得到的值为 6172 和int 类型的数据12345除以2取整所得的值一样,所以有些时候也会被用来替代除2操作。另外,对于超过32位的位移,和左移运算符一样,,会先进行位数求余数。

7. 无符号右移(>>>)

无符号右移运算符和右移运算符是一样的,不过无符号右移运算符在右移的时候是补0的,而右移运算符是补符号位的。以下是-12345二进制表示:

对于源码、反码、补码不熟悉的同学,请自行学习,这里就不再进行补充了讲解了,这里提醒一下,在右移运算符中,右移后补0,是由于正数 12345 符号位为0 ,如果为1,则应补1。

1、原码、反码和补码说明:
一个数可以分成符号位(0正1负)+ 真值,原码是我们正常想法写出来的二进制。由于计算机只能做加法,负数用单纯的二进制原码书写会出错,于是大家发明了反码(正数不变,负数符号位不变,真值部分取反);再后来由于+0, -0的争端,于是改进反码,变成补码(正数不变,负数符号位不变,真值部分取反,然后+1)。二进制前面的0都可以省略,所以总结来说:计算机里的负数都是用补码(符号位1,真值部分取反+1)表示的。2、位运算符和2的关系
位运算符和乘2、除2在大多数时候是很相似的,可以进行替代,同时效率也会高的多,但是两者切记不能混淆 ;很多时候有人会把两者的概念混淆,尤其是数据刚好是 2、4、6、8、100等偶数的时候,看起来就更相似了,但是对于奇数,如本文使用的12345 ,右移之后结果为6172 ,这个结果就和数学意义上的除以2不同了,不过对于int 类型的数据,除2 会对结果进行取整,所以结果也是6172 ,这就更有迷惑性了。

赋值运算符

赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。

除了“=”,其它的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可依此类推。

条件运算符

条件运算符( ? : )也称为 “三元运算符”或“三目运算符”。

语法形式:布尔表达式 ? 表达式1 :表达式2。

运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值。

运算符的优先次序

在对一个表达式进行计算时,如果表达式中含有多种运算符,则要安运算符的优先次序一次从高向低进行。运算符的优先次序如下:

java int相除向上取整_Java基础篇——Java运算符相关推荐

  1. java int相除向上取整_java实战项目常用类,Date、Calendar、BigDecimal、Math、UUID

    Java开发中经常用到的类和方法,以下主要就日期是时间处理.金融数字处理.数学计算.随机数.MD5加密等. java.util.Date类 java.util 包提供了 Date 类来封装当前的日期和 ...

  2. java int相除向上取整_Java工程师(4).运算符

    什么是运算符 运算符可以对两个变量的值执行运算,运算过程由CPU完成. 都有哪几类运算符 Java中的运算符主要包含以下几类: 算术运算符 赋值运算符 关系运算符 逻辑运算符 算术运算符 算术运算符用 ...

  3. 解决java中浮点数相除向上取整出错的方法

    实际应用中,经常可以遇到浮点数之间相除然后向上取整,比如客流量与常量之比和店员数之间就应向上取整,多一个人都应该加一名员工. 先谈谈什么是向上取整,什么是向下取整 上取整,不管四舍五入的规则,只要后面 ...

  4. Java两整数相除向上取整

    前言:Java中两个整数相除,如果不能整除,默认是向下取整的.例如:11 除以 3 的结果是 3.然而,某些情况下(eg. 把11个糖果,每3个分一堆,不足三个也分成一堆,可以分几堆?),我们需要向上 ...

  5. java 向上取整_java 中的异常处理和常用类使用

    一.异常: 1.异常的简单介绍: Throwable类 / Error Exception | | Unchecked Checked Runtime Exception Exception Exce ...

  6. java保留两位小数并向上取整_Java取整,固定保留两位小数,适配负数、金融数字。...

    文/阿敏其人 本文出自阿敏其人简书博客,转载请注明出处和连接. 整数前的0去掉. 小数固定保留两位小数 兼容负数 数字检测 适配金融大数额 核心类 public class BigDecimalStr ...

  7. java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期

    本文主要说一说关于switch case语句用法及注意事项,应对面试官的提问.希望可以帮助那些对switch存在错误和各种细节问题的"码友". switch-case注意事项 sw ...

  8. Java int类型的除法 向上取整 向下取整 保留小数位数

    今天做了一道计算题,用到整数相除的向上取整,突然卡住了.然后查询并试用了如下方法. 一.三目运算法(向上 / 向下取整 快捷.准确) 两个int型 a.b,a / b 向上取整.可以使用 a / b ...

  9. Java中的向上取整 Math.ceil(double)

    在调外部接口获取列表数据时, 需要判断是否已经取完了所有的值,因此需要用到向上取整. Math.ceil()函数就是向上取整,即取大于参数的最小整数值. 只要参数有小数,都会去掉小数位,将整数位加一( ...

最新文章

  1. poj 2728 Desert King(最小比率生成树 / 0-1分数规划 / 二分)
  2. php 清空输入缓存,用PHP清理用户输入的最佳方法是什么?
  3. [jqpolt] formatString 日期格式化列表
  4. 艺术签名python_个性签名设计五十行Python轻松实现
  5. 2019年,你需要关注这些Node API和Web框架
  6. f12控制台如何查看consul_如何打印consul的错误信息
  7. tcpdump工具编译记录
  8. Tomcat学习总结(17)—— Tomcat生产环境中域名访问和连接MySQL
  9. php后台+前端开发过程整理
  10. The operation cannot be completed. See the details.
  11. ICRA2021会议-----SLAM方向汇总
  12. 连表查询 mysql实例_mysql中各种常见join连表查询实例总结
  13. 京东时间校准_微星PAG272QR评测(友达新代号屏出现,QR2正在测试,稍晚一点时间发出)...
  14. Robocode 直线瞄准机器人
  15. Windows 7 多国语言包(MUI)
  16. 相关性研究思路及代码实现(MIC-最大信息系数、Relif-F特征选择算法、pearson、spearman、kendall、卡方检验、fisher精确检验、F检验、简单粗暴的分层聚合)
  17. 移动硬盘提示文件或目录损坏且无法读取怎么办
  18. 下一代半导体表面清洁技术
  19. 区块链技术及实际应用
  20. JS数组、字符串、数字的相互转化

热门文章

  1. Subversion 1.5 安装配置指南
  2. pythonplc曲线_PLC的编程策略:面向对象编程和梯形图逻辑之比较
  3. java 程序执行后 强制gc_【GC系列】JVM的常用GC参数及GC日志解析
  4. 如何查看服务器账户密码信息文件,如何查询服务器的数据库账号密码
  5. linux下编译httpd,Linux下编译安装Apache httpd 2.4
  6. java类的修改三个方面_Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载...
  7. 不显示参数名_Houdini自定义参数Folder的几种模式
  8. 浅谈html的语义化和一些简单优化,html标签语义化
  9. Java中BigInteger的各种方法详解
  10. java服务器内存问题_java内存泄漏5种情况总结