Java - 基本运算符

Java - 基本运算符 首页 / Java入门教程 / Java - 基本运算符

Java提供了一组丰富的运算符来操作变量。无涯教程可以将所有JAVA操作符分为以下几组-

  • 算术运算符
  • 关系运算符
  • 按位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其他运算符

算术运算符

算术运算符在数学表达式中的使用方式与它们在代数中的使用方式相同。下表列出了算术运算符-

假设整数变量A=10,变量B=20,则-

OperatorRemarkExample
+两个值相加A + B=30
-两个值相减A - B=-10
*两个值相乘
A * B=200
/两个值相除
B/A=2
%取模操作B % A=0
++递增+1B++ =21
-- 递增-1B--=19
public class Test {

   public static void main(String args[]) {
      int a = 10;
      int b = 20;
      int c = 25;
      int d = 25;

      System.out.println("a + b=" + (a + b) );
      System.out.println("a - b=" + (a - b) );
      System.out.println("a * b=" + (a * b) );
      System.out.println("b/a=" + (b / a) );
      System.out.println("b % a=" + (b % a) );
      System.out.println("c % a=" + (c % a) );
      System.out.println("a++  =" +  (a++) );
      System.out.println("b--  =" +  (a--) );

      // 检查 d++ 和 ++d 的区别
      System.out.println("d++  =" +  (d++) );
      System.out.println("++d  =" +  (++d) );
   }
}

这将产生以下结果-

a + b=30
a - b=-10
a * b=200
b/a=2
b % a=0
c % a=5
a++  =10
b--  =11
d++  =25
++d  =27

关系运算符

Java语言支持以下关系运算符,假设变量A=10,变量B=20,则-

OperatorRemarkExample
== 相等(A == B) is not true.
!=不相等
(A != B) is true.
大于(A > B) is not true.
小于(A < B) is true.
>=大于或等于(A >= B) is not true.
<=小于或等于(A <= B) is true.
public class Test {

   public static void main(String args[]) {
      int a = 10;
      int b = 20;

      System.out.println("a == b=" + (a == b) );
      System.out.println("a != b=" + (a != b) );
      System.out.println("a > b=" + (a > b) );
      System.out.println("a < b=" + (a < b) );
      System.out.println("b >= a=" + (b >= a) );
      System.out.println("b <= a=" + (b <= a) );
   }
}

这将产生以下结果-

a == b=false
a != b=true
a > b=false
a < b=true
b >= a=true
b <= a=false

按位运算符

Java定义了几个按位运算符,这些运算符可以应用于整数类型(long、int、short、char和byte)。

逐位运算符作用于位并执行逐位运算。假设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
下表列出了按位运算符,假设整数变量A=60,变量B=13,则-
OperatorRemarkExample
AND(和)(A & B)=12 which is 0000 1100
|OR(或)(A | B)=61 which is 0011 1101
^XOR(异或)(A ^ B)=49 which is 0011 0001
~(~A )=-61 which is 1100 0011 in 2's complement form due to a signed binary number.
<< 左移A << 2=240 which is 1111 0000
>> 右移A >> 2=15 which is 1111
>>>右移补零A >>>2=15 which is 0000 1111
public class Test {

   public static void main(String args[]) {
      int a = 60;	/* 60=0011 1100 */
      int b = 13;	/* 13=0000 1101 */
      int c = 0;

      c = a & b;        /* 12=0000 1100 */
      System.out.println("a & b=" + c );

      c = a | b;        /* 61=0011 1101 */
      System.out.println("a | b=" + c );

      c = a ^ b;        /* 49=0011 0001 */
      System.out.println("a ^ b=" + c );

      c = ~a;           /*-61=1100 0011 */
      System.out.println("~a=" + c );

      c = a << 2;       /* 240=1111 0000 */
      System.out.println("a << 2=" + c );

      c = a >> 2;       /* 15=1111 */
      System.out.println("a >> 2 =" + c );

      c = a >>> 2;      /* 15=0000 1111 */
      System.out.println("a >>> 2=" + c );
   }
}

这将产生以下结果-

a & b=12
a | b=61
a ^ b=49
~a=-61
a << 2=240
a >> 2 =15
a >>> 2=15

逻辑运算符

下表列出了逻辑运算符,假设布尔变量A=true,变量B=false,则-

OperatorRemarkExample
&&AND (A && B) is false
||OR(A || B) is true
!NOT!(A && B) is true
public class Test {

   public static void main(String args[]) {
      boolean a = true;
      boolean b = false;

      System.out.println("a && b=" + (a&&b));
      System.out.println("a || b=" + (a||b) );
      System.out.println("!(a && b)=" + !(a && b));
   }
}

这将产生以下结果-

a && b=false
a || b=true
!(a && b)=true

赋值运算符

下面是Java语言-支持的赋值运算符

OperatorRemarkExample
=赋值C=A + B 相等于 A + B=C
+=相加与赋值
C += A 相等于 C=C + A
-=相减与赋值
C -= A 相等于 C=C – A
*=相乘与赋值
C *= A 相等于 C=C * A
             /=相除与赋值
C /= A 相等于 C=C/A
%=取模与赋值
C %= A 相等于 C=C % A
<<=左移与赋值
C <<= 2 相等于 C=C << 2
>>=右移与赋值
C >>= 2 相等于 C=C >> 2
&=按位与赋值C &= 2 相等于 C=C & 2
^=按位异或与赋值C ^= 2 相等于 C=C ^ 2
|=按位OR与赋值
C |= 2 相等于 C=C | 2
public class Test {

   public static void main(String args[]) {
      int a = 10;
      int b = 20;
      int c = 0;

      c = a + b;
      System.out.println("c=a + b=" + c );

      c += a ;
      System.out.println("c += a =" + c );

      c -= a ;
      System.out.println("c -= a=" + c );

      c *= a ;
      System.out.println("c *= a=" + c );

      a = 10;
      c = 15;
      c /= a ;
      System.out.println("c /= a=" + c );

      a = 10;
      c = 15;
      c %= a ;
      System.out.println("c %= a =" + c );

      c <<= 2 ;
      System.out.println("c <<= 2=" + c );

      c >>= 2 ;
      System.out.println("c >>= 2=" + c );

      c >>= 2 ;
      System.out.println("c >>= 2=" + c );

      c &= a ;
      System.out.println("c &= a =" + c );

      c ^= a ;
      System.out.println("c ^= a  =" + c );

      c |= a ;
      System.out.println("c |= a  =" + c );
   }
}

这将产生以下结果-

c=a + b=30
c += a =40
c -= a=30
c *= a=300
c /= a=1
c %= a =5
c <<= 2=20
c >>= 2=5
c >>= 2=1
c &= a =0
c ^= a  =10
c |= a  =10

条件运算符(?:)

条件运算符也称为三元运算符。这个运算符由三个操作数组成,用于计算布尔表达式。运算符的目标是决定应该将哪个值赋给变量。运算符编写为-

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 );
   }
}

这将产生以下输出-

Value of b is : 30
Value of b is : 20

InstanceOf运算符

是否属于特定类型(类型或接口类型)。instanceof运算符被写为-

(object reference variable ) instanceof  (class/interface type)
public class Test {

   public static void main(String args[]) {

      String name = "James";

      //following will return true since name is type of String
      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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

人工智能基础课 -〔王天一〕

微服务架构实战160讲 -〔杨波〕

Nginx核心知识150讲 -〔陶辉〕

重学前端 -〔程劭非(winter)〕

说透芯片 -〔邵巍〕

Redis源码剖析与实战 -〔蒋德钧〕

朱涛 · Kotlin编程第一课 -〔朱涛〕

超级访谈:对话汤峥嵘 -〔汤峥嵘〕

后端工程师的高阶面经 -〔邓明〕

好记忆不如烂笔头。留下您的足迹吧 :)