运算符与优先级

文章目录

  • 运算符与优先级
    • 一、运算符
      • (1)数值操作符
      • (2)赋值及结合赋值操作符
      • (3)自增与自减运算符
      • (4)关系运算符
      • (5)布尔运算符
      • (6)位运算符
      • (7)三元运算符
    • 二、运算符的优先级
    • 三、类型转换

一、运算符

(1)数值操作符

数值数据类型的操作符包括标准的算术操作符:加号(+)、减号(-)、乘号(*)、除号(/)和求余号(%),操作数是被操作符操作的值。

运算符 名字 示例 运算结果
+ 34 + 1 35
- 34.0-0.1 33.9
* 300 * 30 9000
/ 1.0 / 2.0 0.5
% 求余 20 %3 2
  • 当除法的操作数都是整数时,除法的结果就是整数,小数部分被舍去。
  • 操作符 %, 被称为求余或者取模操作符,可以求得除法的余数。左边的操作数是被除数。操作符 % 通常用在正整数上,实际上,它也可用于负整数和浮点值。只有当被除数是负数时,余数才是负的。
  • 操作符 +-可以是一元的也可以是二元的。一元操作符仅有一个操作数;而二元操作符有两个操作数。

(2)赋值及结合赋值操作符

  • 1.赋值运算符
    在 Java 中,将等号(=)作为赋值操作符(assignment operator)。

    • 赋值语句(assignment statement):( 变量=表达式;)

      variable = expression;
      
    • 表达式(expression): 表示涉及值、变量和操作符的一个运算,它们组合在一起计算出一个新值
    • 赋值语句常常称作賦值表达式(assignment expression)
  • 2.结合赋值运算符
    操作符 +-*/% 可以结合賦值操作符形成增强操作符。

    作符 名称 示例 等价于
    += 加法赋值操作符 i+=8 i =i+8
    -= 减法赋值操作符 i-=8 i=i-8
    *= 乘法赋值操作符 i*=8 i=i*8
    /= 除法赋值操作符 i/=8 i=i/8
    %= 求余赋值操作符 i% = 8 i = i %8
    • 在增强操作符中是没有空格的
    • 操作符(+=、-=、*=、/=、%=) 可以构成赋值语句,也可以构成赋值表达式。
    • 如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换

(3)自增与自减运算符

自增操作符(++) 和自减操作符(--) 是对变量进行加 1 和减 1 的操作。

操作符 名称 说明
++var 前缀自增运算符 变量 var 的值加1且使用 var 增加后的新值
var++ 后缀自增运算符 变置 var 的值加1但使用 var 原来的值
–var 前缀自减运算符 变量 var 的值减1且使用 var 减少后的新值
var– 后缀自减运算符 变置 var 的值减1但使用 var 原来的值

使用自增操作符和自减操作符可以使表达式更加简短,但也会使它们比较复杂且难以读懂。应该避免在同一个表达式中使用这些操作符修改多个变量或多次修改同一个变量。

(4)关系运算符

Java运算符 数学符号 名称
< <<< 小于
<= ⩽\leqslant⩽ 小于等于
> >>> 大于
<= ⩾\geqslant⩾ 大于等于
== === 等于
!= ≠\not =​= 不等于
  • 比较的结果是一个布尔值:true ( 真)或 false (假) 。
  • 相等的关系操作符是两个等号(==) , 而不是一个等号(=)。

(5)布尔运算符

逻辑操作符( logical operator ) 也称为布尔操作符(boolean operator), 是对布尔值进行的运算,创建新的布尔值。

操作符 名称 说明
! 逻辑非
&& 逻辑与
|| 逻辑或
^ 异或 逻辑异或
  • 非操作符(||)对 true 取反是 false, 而 false 取反之后则是 true
  • 与操作(&&)。当且仅当两个操作数都为 true 时,这两个布尔型操作数的与(&&) 为 true
  • 或操作符(||),当至少有一个操作数为true 时,两个布尔型操作数的或(||)为 true
  • 异或操作符(^ )。当且仅当两个操作数具有不同的布尔值时,两个布尔型操作数的异或(^) 才为 true

&&||被称为短路或者懒惰操作符:
如果操作符&&的操作数之一为 false, 那么表达式就是 false;如果操作符||的操作数之一为 true, 那么表达式就是 true。

  • 当计算 p1&&p2 时,Java 先计算 p1, 如果 p1 为 true 再计算 p2; 如果 p1 为 false, 则不再计算p2。
  • 当计算 p1||p2时,Java 先计算 p1, 如果 p1为 false 再计算 p2;如果 p1为 true, 则不再计算 P2

(6)位运算符

用机器语言编写程序,经常要直接处理二进制数值,并在位级别上执行操作。Java 提供了位操作符和移位操作符:

位操作符 名称 描述
& 按位与 两个相应位上的比特如果都为1,则执行与搡作会得到 1
| 按位或 两个相应位上的比特如果其中有一个为 1 , 则执行或操作会得到1
^ 按位异或 两个相应位上的比特如果相异,则执行与或操作会得到 1
~ 按位求反 操作符将每个比特从 0 到 1 或者从 1 到 0进行转换
<< 左移位 操作符将其左边的操作数按照第二个操作数指定的位移数进行左移位,右边空出来的补 0
>> (带符号)右移位 操作符将其第一个操作数按照第二个操作数指定的位移数进行右移位,最高位补上符号位
>>> (无符号)右移位 操作符将其第一个操作数按照第二个操作数指定的位移数进行右移位,左边空出来的补 0

(7)三元运算符

condition ? expression1 : expresszon2

如果条件为 true,就为第一个表达式的值,否则计算为第二个表达式的值。

二、运算符的优先级

操作符按照优先级递减的顺序从上到下列出。同一栏中的操作符优先级相同,它们的结合方向如表中所示:

三、类型转换

Java可以将一个数值赋给支持更大数值范围类型的变量,例如,可以将 long 型的值赋给 float型变量。但是,如果不进行类型转换,就不能将一个值赋给范围较小类型的变量。类型转换是一种将一种数据类型的值转换成另一种数据类型的操作。将一个小范围类型的变量转换为大范围类型的变量称为拓宽类型( widening a type ), 把大范围类型的变量转换为小范围类型的变量称为缩窄类型( narrowing a type)。Java 将自动拓宽一个类型,但缩窄类型必须显式完成。

在下图中有6个实心箭头,表示无信息丢失的转换 ;3个虚箭头,表示可能有精度损失的转换。

强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名:

(type) variable

【Java程序设计】运算符与优先级相关推荐

  1. java中运算符的优先级

    所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2  得到的结果是 13 &quo ...

  2. JAVA语言运算符有哪些?

    Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力 ...

  3. 头歌Java入门 - 运算符和表达式

    第1关:算数运算符 任务描述 本关需要你使用Java程序完成对两个数的运算,效果如下: 相关知识 在我们的生活中,我们会经常碰到两个数的加,减,乘,除,取模运算,那么我们如何在计算机当中,通过计算机语 ...

  4. 【面试】JAVA六种运算符详解及优先级

    文章目录 一.算术运算符 二.赋值运算符 三.关系/比较运算符 四.逻辑运算符 五.位运算符 六.三元运算符 七.运算符的优先级 一.算术运算符 + - * / % ++ -- % 取模运算 - 取余 ...

  5. Java 运算符及优先级

    运算符 分割符: , ; [] () 算数运算符: + - * / % ++ -- 关系运算符: > < >= <= == != 逻辑运算符: ! & | ^ & ...

  6. 关于java运算符以及优先级的整理

    关于java运算符以及优先级的整理 一.基本运算符 算术运算符: + , - , * , / , % , ++ , -- 赋值运算符: = 关系运算符: > , < , >= , & ...

  7. Java运算符的优先级

    Java中的表达式就是使用运算符来连接起来的符合Java规则的式子,运算符的优先级决定了表达式中运算执行的先后顺序,通常优先级由高到低的顺序依次是: 增量和减量运算 算数运算符 比较运算符 逻辑运算符 ...

  8. java se运算符优先级,【JAVA SE基础篇】10.运算符优先级与类型转换

    [JAVA SE基础篇]10.运算符优先级与类型转换 1.运算符的优先级 运算符的优先级在考试中会考,了解即可,多用就会熟能生巧 实际使用过程中建议用小括号来分优先级 关键就是:逻辑非>逻辑与& ...

  9. java判断优先级代码_java运算符的优先级

    下图是每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 ...

最新文章

  1. 2017-2018-1 20155327 实验五 通讯协议设计
  2. Docker swarm mode
  3. 前端学习(2621):更新品牌
  4. BGP——选路—(8~13条)选路源分析(讲解+配置命令)
  5. SpringBoot_Redis配置
  6. python初学者怎么入门-python初学者怎么入门
  7. Codeforces 464E. The Classic Problem
  8. DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常
  9. vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
  10. 怎样复制秀米html码,秀米微信图文编辑器如何复制?
  11. 基于i.mx6q平台的NES模拟器移植
  12. c++ 迷宫思路_C++实现简单走迷宫的代码
  13. vivo手机系统android9,vivo终于推送Android9.0,这几款机型你有吗?V粉们已经迫不及...
  14. 青龙羊毛——猫咪放羊(搬运)
  15. ECS服务器10M带宽能让多少人同时访问?
  16. win10双显示屏,分屏显示内容
  17. Abelssoft SSD Fresh Plus 2021 v10.06.31890 固态硬盘性能优化工具中文版
  18. 外国客户一般汇款到国内需要多久时间?
  19. java抛异快捷键_Java 如何抛出异常、自定义异常、手动或主动抛出异常
  20. 需要新应用打开此steam_Steam 圣诞节促销活动——谷节日活动:节日市场

热门文章

  1. 命令提示符使用java 类报错_lt;03gt;详解第一个Java程序
  2. java 日期只计算年月日大小_java 日期加减天数、月数、年数的计算方式
  3. query string parameter前端怎么传参_Substrate 前端开发-1: 用 Polkadot-JS API 轻松搭建前端
  4. php安装包进行安装吗,php的一键安装包有哪些php环境搭建
  5. php查询近期数据,thinkphp中如何查询当天,本周的,本月的,本年的数据
  6. easyUi reload 重定向URL
  7. eclipse查看jar包源码(反编译)
  8. python中tile的用法_Python:numpy中的tile函数
  9. linux apache压缩包安装目录,源码包安装Apache服务
  10. mysql创建fulltext索引_mysql – 如何在多个列上创建FULLTEXT索引?