Java Review (三、运算符)

举报
三分恶 发表于 2021/04/23 00:27:43 2021/04/23
【摘要】 文章目录 算术运算符赋值运算符位运算符比较运算符逻辑运算符扩展后的赋值运算符三目运算符运算符优先级 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 Java语言中的运算符可分为如下几种。 算术运算符赋值运算符比较运算符逻辑运算符位运算符类型相关运算符 算术运算符 Java支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算:加...


Java语言中的运算符可分为如下几种。

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 类型相关运算符

算术运算符

Java支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算:加、减、乘、除和求 余等。下面是7个基本的算术运算符。

  • +:加法运算符。

  • -: 减法运算符。

  • *: 乘法运算符

  • /: 除法运算符。
    除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果 也是整数,就是将自然除法的结果截断取整,例如19/4的结果是4,而不是5。如果除法运算符的两个操作数都是整数类型,则除数不可以是0,否则将引发除以零异常。

    但如果除法运算符的两个操作数有一个是浮点数,或者两个都是浮点数,则计算结果也是浮点数, 这个结果就是自然除法的结果。而且此时允许除数是0,或者0.0,得到结果是正无穷大或负无穷大。

  • %: 求余运算符。
    求余运算的结果不一定总是整数,它的计算结果是使用第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数。由于求余运算也需要进行除法运算,因此如果求余 运算的两个操作数都是整数类型,则求余运算的第二个操作数不能是0,否则将引发除以零异常。如果 求余运算的两个操作数中有一个或者两个都是浮点数,则允许第二个操作数是0或。.0,只是求余运算 的结果是非数:NaN= 0或0.0对零以外的任何数求余都将得到。

  • ++:自加。
    该运算符有两个要点:①自加是单目运算符,只能操作一个操作数;②自加运算符只能操作单个数值型(整型、浮点型都行)的变量,不能操作常量或表达式。运算符既可以出现在操作 数的左边,也可以出现在操作数的右边。但出现在左边和右边的效果是不一样的。如果把++放在左边, 则先把操作数加1,然后才把操作数放入表达式中运算;如果把++放在右边,则先把操作数放入表达式 中运算,然后才把操作数加1。

int a = 5;
//让a先执行算术运算,然后自加 ,b的值是11
int b = a++ + 6;

  
 
  • 1
  • 2
  • 3
int a = 5;
//让a先自加,然后执行算术运算,b的值是12
int b = ++a + 6;

  
 
  • 1
  • 2
  • 3
  • - -:自减。也是单目运算符,用法与"基本相似,只是将操作数的值减1。

Java并没有提供其他更复杂的运算符,如果需要完成乘方、开方等运算,则可借助于java.lang.Math 类的工具方法完成复杂的数学运算。

赋值运算符

赋值运算符用于为变量指定变量值,与C类似,Java也使用 =作为赋值运算符。通常,使用赋值运 算符将一个直接量值赋给变量。

int a=5;

  
 
  • 1

也可使用赋值运算符将一个变量的值赋给另一个变量。

int a=5;
int b=a;

  
 
  • 1
  • 2

位运算符

Java支持的位运算符有如下7个。

  • &: 按位与。
  • |: 按位或。
  • :按位非。
  • ^:按位异或。
  • << : 左移运算符。
  • >>:右移运算符。
  • >>>:无符号右移运算符。
位运算符的基本运算规则
设A = 0011 1100(2) 60(10)    B = 0000 1101(2) 13(10)
操作符 描述 例子
如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100
| 如果相对应位都是 0,则结果为 0,否则为 1 (A
^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2得到15即0000 1111

比较运算符

比较运算符用于判断两个变量或常量的大小,比较运算的结果是一个布尔值(true或false),Java 支持的比较运算符如下:

  • >:大于,只支持左右两边操作数是数值类型。如果前面变量的值大于后面变量的值,则返回true。
  • >=:大于等于,只支持左右两边操作数是数值类型。如果前面变量的值大于等于后面变量的值, 则返回true。
  • <:小于,只支持左右两边操作数是数值类型。如果前面变量的值小于后面变量的值,则返回trueo
  • <=:小于等于,只支持左右两边操作数是数值类型。如果前面变量的值小于等于后面变量的值, 则返回true。
  • ==/=:等于,如果进行比较的两个操作数都是数值类型,即使它们的数据类型不相同,只要它们 的值相等,也都将返回true——例如97 = 'a’返回true, 5.0 = 5也返回true;如果两个操作数都是引用类型,那么只有当两个引用变量的类型具有父子关系时才可以比较,而且这两个引用必须指向同一个对象才会返回true;Java也支持两个boolean类型的值进行比较,例如,true = false 将返回false 0
    基本类型的变量、值不能和引用类型的变量、值使用==进行比较;boolean类型的变量、值不能与其他任意类型的变量、值使用=进行比较;如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用=进行比较.
  • !=:不等于,如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要 它们的值不相等,也都将返回true;如果两个操作数都是引用类型,只要两个引用指向的不是同一个对象就会返回true。

逻辑运算符

  • && :与,当且仅当两个操作数都为真,条件才为真。
  • & :不短路与,作用与&&相同,但不会短路。
  • | | : 或,如果任何两个操作数任何一个为真,条件为真。
  • |:不短路或,作用与||相同,但不会短路
  • : 非,用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。
    对短路逻辑或||而言,如果第一个操作数返回true, ||将 不再对第二个操作数求值,直接返回true;不短路与|则两边都要判断。
 int a = 5;//定义一个变量; boolean b = (a>4)||(a++<10); //使用短路逻辑运算符的结果为5 System.out.println(a); boolean c = (a>4)&(a++<10); System.out.println("a的结果为"+a); boolean c = (a>4)&(a++<10); //使用不短路逻辑运算符的结果为6 System.out.println("a的结果为"+a);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

&与&&的区别与此类似:&总会计算前后两个操作数,而&&先计算左边的操作数,如果左边的操作数为false,则直接返回false,根本不会计算右边的操作数。

 int a = 5;//定义一个变量; boolean b = (a<4)&&(a++<10); //使用短路逻辑运算符的结果为5 System.out.println(b); //使用不短路逻辑运算符的结果为6 boolean c = (a<4)&(a++<10); System.out.println("a的结果为"+a);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

扩展后的赋值运算符

赋值运算符可与算术运算符、位移运算符结合,扩展成功能更加强大的运算符。扩展后的赋值运算

  • +=:对于x+=y,即对应于x = x + y。
  • -=:对于x -=y>即对应于x = x - yo
    *=:对于x *= y,即对应于x = x * yo
  • /=:对于x/= y,即对应于x = x/y。
  • %=:对于x %= y,即对应于x = x % y。
  • &=:对于x&=y,即对应于x = x & y。
  • |=:对于x |=y,即对应于x = x|y。
  • ^=:对于x A=y,即对应于x = x Ay。
  • <<=: 对于x<<=y,即对应于x = x<<y。
  • >>=: 对于x>>=y,即对应于x = x >> y。
  • >>>=: 对于x»>=y,即对应于x = x >>> y。

三目运算符

三目运算符只有一个?:,三目运算符的语法格式如下:

variable x = (expression) ? value if true : value if false

  
 
  • 1
 int a , b; a = 10; // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30 b = (a == 1) ? 20 : 30; System.out.println( "Value of b is : " +  b );

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

运算符优先级

运算符优先级

具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别 操作符 关联性
后缀 () [] . (点操作符) 左到右
一元 + + - !〜 从右到左
乘性 * /% 左到右
加性 + - 左到右
移位 >> >>> << 左到右
关系 >> = << = 左到右
相等 == != 左到右
按位与 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 | | 左到右
条件 ?: 从右到左
赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
逗号 左到右






参考:

【1】:《疯狂Java讲义》
【2】:《Java核心技术 第一卷》
【3】:https://www.runoob.com/java/java-operators.html

文章来源: blog.csdn.net,作者:三分恶,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/sinat_40770656/article/details/102027910

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。