Java教程

【Java程序设计】运算符与优先级

本文主要是介绍【Java程序设计】运算符与优先级,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

运算符与优先级

在这里插入图片描述

文章目录

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

一、运算符

(1)数值操作符

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

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

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

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

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

    作符名称示例等价于
    +=加法赋值操作符i+=8i =i+8
    -=减法赋值操作符i-=8i=i-8
    *=乘法赋值操作符i*=8i=i*8
    /=除法赋值操作符i/=8i=i/8
    %=求余赋值操作符i% = 8i = 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程序设计】运算符与优先级的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!