Java快速入门(8) - 基本运算符

前言

Java提供了非常丰富的运算符来对变量进行计算。我们可以把这些运算符分为下面几类:

  • 算术运算符
  • 关系运算符
  • 按位运算符
  • 逻辑运算符
  • 赋值运算符
  • 杂项运算符

算术运算符

算术运算符用于数学表达式中,和代数中的用法一样。
下面表格中列出了算数运算符计算的例子,其中假设变量A的值是10,变量B的值是20。

运算符说明举例
+ (加)将符号左右两侧的数值进行相加A + B = 30
- (减)左右进行相减A - B = -10
* (乘)乘法运算A * B = 200
/ (除)除法运算B / A = 2
% (模取)计算左右相除的余数B % A = 0
++ (自加)将值加1B++ = 21
– (自减)将值减1B-- = 19

关系运算符

下面表格中列出了Java中的关系运算符,同样假设变量A的值是10,变量B的值是20。

运算符描述举例
== (等于)判断两边是否相等,如果相等返回true,否则返回false。(A == B) = false.
!= (不等于)判断两边是否不相等,如果相等返回false,否则返回true。(A != B) = true
> (大于)判断左边是否大于右边,如果是则返回true,否则返回false。(A > B) = false
< (小于)判断左边是否小于右边,如果是则返回true,否则返回false。(A < B) = true
>= (大于等于)判断左边是否大于或等于右边,如果是则返回true,否则返回false。(A >= B) = false
<= (小于等于)判断左边是否小于或等于右边,如果是则返回true,否则返回false。(A <= B) = true

按位运算符

Java定义了多种按位运算符,可以用与integer,int,long,short,char和byte数据类型。
按位运算符用于二进制比特位(bit)与比特位之间的计算。假设a=60,b=13,换算成二进制以后,其表示如下:

a = 0011 1100
b = 0000 1101

a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
下表中列出了具体的按位运算符说明与计算示例:

运算符描述举例
& (按位与)二进制与操作符,操作符两边都为1是得到1,否则得到0(A & B) 得到12,也就是二进制0000 1100
| (按位或)二进制或操作符,操作符两边至少有一边为1时得到1,否则得到0(A | B) 得到61,也就是0011 1101
^ (按位异或)二进制异或操作符,操作符有且只有一边为1时得到1,否则得到0(A ^ B) 得到49,也就是0011 0001
~ (按位补码)二进制补码运算符是一元的,具有“翻转”位的作用。(~A )得到-61也就是1100 0011,二进制补码形式。
<< (左移)二进制左移运算符。 左操作数的值向左移动右操作数指定的位数。A << 2 得到240,也就是二进制1111 0000
>> (右移)二进制右移运算符。 左操作数的值向右移动右操作数指定的位数。A >> 2得到15,也就是1111
>>> (0填充右移)右移零填充运算符。 左操作数的值向右移动右操作数指定的位数,并且移位后的值用零填充。A >>>2得到15,也就是0000 1111

逻辑运算符

下表中详细说明了逻辑运算符,其中假设A为true(真),B为false(假)。

运算符描述举例
&& (逻辑与)逻辑与操作符。当操作符两边都为true时,表达式返回为true,否则为false。(A && B) 为 false
|| (逻辑或)逻辑或操作符。当操作符两边至少有一边为true时,表达式返回true,否则返回false。(A
! (逻辑非)逻辑非操作符。用于将表达式结果反转,例如表达式为true时,使用“非”运算后结果为false;当表达式为false时,使用“非”运算后结果为true。!(A && B) 为 true

赋值运算符

下表中详细列举了Java中的赋值运算符。

操作符说明
=简单的等号赋值运算符。将等号右边的值赋给左边。
+=将运算符左右两边的值相加后得到的值,赋值给运算符左边的变量
-=将运算符左右两边的值相减后得到的值,赋值给运算符左边的变量
*=将运算符左右两边的值相乘后得到的值,赋值给运算符左边的变量
/=将运算符左右两边的值相除后得到的值,赋值给运算符左边的变量
%=将运算符左右两边的值取模后得到的值,赋值给运算符左边的变量
<<=将运算符左边的值左移右边的数值对应的位数后,赋值给运算符左边的变量
>>=将运算符左边的数值右移右边的数值对应的位数后,赋值给运算符左边的变量
&=将运算符左边的值与右边的值进行按位与操作后,将得到的值赋给左边的变量
^=将运算符左边的值与右边的值进行按位异或操作后,将得到的值赋给左边的变量
|=将运算符左边的值与右边的值进行按位或操作后,将得到的值赋给左边的变量

杂项运算符

除了上文中提及的运算符之外,Java还支持少量其它的运算符。

条件运算符(? :)

条件运算符也叫三元运算符。这个运算符由三个操作数组成,用于评估布尔表达式。条件表达式用来决定哪个值该被赋给变量,写法如下:

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

下面是一个应用的例子:

public class Test {

   public static void main(String args[]) {
      int a, b;
      a = 10;
      b = (a == 1) ? 20: 30;
      System.out.println( "Value of b is : " +  b );

      b = (a == 10) ? 20: 30;
      System.out.println( "Value of b is : " + b );
   }
}

instanceof操作符

这个操作符仅用于对象的引用变量,用来检查对象是否是一种特定的类型(类的类型或接口类型)。instanceof的用法如下:

( Object reference variable ) instanceof  (class/interface type)

如果左侧的变量是右侧的类/接口的变量引用,那么表达式就返回true。下面是一个使用的示例:

public class Test {

   public static void main(String args[]) {

      String name = "James";
      boolean result = name instanceof String;
      System.out.println( result );
   }
}

程序运行结果输出如下:

true

如果要比较的对象是与右侧类型兼容,则此运算符表达式仍将返回true。下面是另外一个例子:

class Vehicle {}

public class Car extends Vehicle {

   public static void main(String args[]) {

      Vehicle a = new Car();
      boolean result =  a instanceof Car;
      System.out.println( result );
   }
}

程序运行结果输出如下:

true

Java运算符的优先级

运算符优先级确定一个表达式中运算的分组和顺序,这将影响表达式的计算结果。部分运算符优先级高于其它运算符,例如,乘法运算符的优先级高于加法运算符。
举个例子,x = 7 + 3 * 2。在这个表达式中,x的计算结果为13而不是20,这是因为乘法运算符(*)比加法运算符(+)的优先级更高,所以首先计算3 * 2,然后再将这个计算结果与7相加。
下表中,运算符的优先级为从上到下依次递减,也就是第一行的运算符优先级最高,最后一行的运算符优先级最低。在同一个表达式中,运算符的优先级越高,就越先被计算。

类别运算符关联性
后缀expression++ expression–从左到右
一元++expression –-expression +expression –expression ~ !从右到左
乘性* / %从左到右
累加+ -从左到右
移位<< >> >>>从左到右
关系型< > <= >= instanceof从左到右
相等== !=从左到右
按位与&从左到右
按位异或^从左到右
按位或|从左到右
逻辑与&&从左到右
逻辑或||从左到右
条件运算符?:从右到左
赋值运算符= += -= *= /= %= ^= |= <<= >>= >>>=从右到左

关注公众号「小白轻松学编程」

更多交流,欢迎微信搜索并关注公众号「小白轻松学编程」!
博客里所有教程会第一时间在公众号上更新哟,扫码关注一下吧~
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值