开发手册 欢迎您!
软件开发者资料库

Java - 基本运算符

Java Basic Operators - 从简单和简单的步骤学习Java,从基本到高级概念,包括Java语法面向对象语言,方法,覆盖,继承,多态,接口,包,集合,网络,多线程,泛型,多媒体,序列化, GUI。

Java提供了一组丰富的操作符来操作变量.我们可以将所有Java运算符划分为以下组 :

  • 算术运算符

  • 关系运营商

  • 按位运营商

  • 逻辑运营商

  • 分配运营商

  • 杂项运算符

算术运算符

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

假设整数变量A保持10,变量B保持20,然后是 :

运算符描述示例
&加; (添加)在运算符的任一侧添加值.A+ B将给出30
- (减法)从左侧操作数中减去右侧操作数.A  -  B将给-10
* (乘法)将运算符两侧的值相乘.A * B将给出200
/(Division)将左侧操作数除以右侧操作数.B/A会给2
%(模数)将左侧操作数除以右侧操作数并返回余数.B %A将给0
++ (增量)将操作数的值增加1.B+ &加;得出21
- (递减)将操作数的值减1.B--给出19

关系运算符

Java语言支持以下关系运算符.

假设变量A保持10,变量B保持20,然后:

运算符描述示例
检查两个操作数的值是否相等,如果是,则条件变为真.(A == B)不成立.
!=(不等于)检查两个值是否为操作数相等或不相等,如果值不相等则条件变为真.(A!= B)为真.
> (大于)检查左操作数的值是否大于右操作数的值,如果是,则条件变为真.(A> B)不成立.
                         < (小于)
检查左操作数的值是否小于右操作数的值,如果是,则条件变为真.(A< B)为真.
> =(大于或等于)检查左操作数的值是否大于或等于该值右操作数,如果是,则条件变为真.(A> = B)不成立.
< =(小于或等于)检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真.(A< = B)为真.

按位运算符

Java定义了几个bitw ise运算符,可以应用于整数类型,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然后:

运算符描述示例
&安培; (按位和)如果两个操作数都存在,则二进制AND运算符会将结果复制到结果中.(A& B)将给出12,即0000 1100
| (按位或)二进制OR运算符复制一个位,如果它存在于任一操作数中.(A | B)将给出61这是0011 1101
^(按位XOR)二进制XOR运算符复制位它设置在一个操作数中,但不是两个.(A ^ B)将给出49,即0011 0001

〜(按位与)

Binary Ones Complement Operator是一元的,具有'翻转'位的效果.(~A)将给出-61,由于带符号的二进制数,它是2的补码形式的1100 0011.
(左移)二进制左移运算符.左操作数值向左移动右操作数指定的位数.A<< 2将给出240这是1111 0000
>>  (右移)二进制右移运算符.左操作数值向右移动右操作数指定的位数.A>> 2将给出15这是1111
>>> (零填充右移)右移零填充运算符.左操作数值向右移动右操作数指定的位数,移位值用零填充.A>>> 2将给出15,即0000 1111

逻辑运算符

下表列出了逻辑运算符 :

假设布尔变量A保持为真,变量B保持为假,然后是 :

运算符描述示例
被称为逻辑AND运算符.如果两个操作数都不为零,则条件变为真.(A&& B)是false
|| (逻辑或)被称为逻辑OR运算符.如果两个操作数中的任何一个非零,则条件变为真.(A || B)是true
! (逻辑上没有)被称为逻辑非运算符.用于反转其操作数的逻辑状态.如果条件为真,那么Logical NOT运算符将为false.!(A&& B)为真

分配运算符

以下是Java语言支持的赋值运算符 :

运算符描述示例
=简单赋值运算符.将右侧操作数的值分配给左侧操作数.C = A+ B将指定A&plus的值; B到C
+ =添加AND赋值运算符.它将右操作数添加到左操作数并将结果赋给左操作数.C+ = A相当于C = C+ A
-  =减去AND赋值运算符.它从左操作数中减去右操作数,并将结果赋给左操作数.C  -  = A相当于C = C  -  A
* =乘以AND赋值运算符.它将右操作数与左操作数相乘,并将结果赋值给左操作数.C* = A相当于C = C* A
/=除以AND赋值运算符.它将左操作数与右操作数分开,并将结果赋值给左操作数.C/= A相当于C = C/A
%=模数和赋值运算符.它使用两个操作数来获取模数,并将结果赋值给左操作数.C%= A相当于C = C %A
<< =左移AND赋值运算符.C< = 2与C = C<< 2
>> =右移AND赋值运算符.C>> = 2与C = C>>相同. 2
& =按位AND赋值运算符.C& = 2与C = C& 2
^ =按位异或和赋值运算符.C ^ = 2与C = C ^ 2相同
| =按位包含OR和赋值运算符.C | = 2与C = C相同| 2

其他运算符

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

这将产生以下结果 :

输出

b的值是:30 b的值是:20

instanceof运算符

此运算符仅用于对象引用变量.运算符检查对象是否属于特定类型(类类型或接口类型). instanceof运算符写为 :

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

如果操作员左侧的变量引用的对象在右侧检查了类/接口类型的IS-A,则结果为真.以下是一个示例 :

示例

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

Java运算符的优先级

运算符优先级确定表达式中的术语分组.这会影响表达式的计算方式.某些运营商的优先级高于其他运营商;例如,乘法运算符的优先级高于加法运算符 :

例如,x = 7+ 3* 2;这里x分配13,而不是20,因为operator*优先级高于+所以它首先乘以3* 2,然后加上7.

这里,优先级最高的运算符出现在表的顶部,最低的运算符出现在底部.在表达式中,将首先计算更高优先级的运算符.

类别运算符Associativity
Postfix表达式++表达式 -从左到右
Unary++表达式 - 表达式+表达式 - 表达式〜!从右到左
Multiplicative*/%从左到右
Additive+  -从左到右
Shift<<>>>>>从左到右
Relational<>从左到右
Equality==!=从左到右
按位AND&从左到右
按位异或^从左到右
按位OR|从左到右
逻辑AND&&从左到右
逻辑OR||从左到右
Conditional?:从右到左
Assignment= + =  -  = * =/=%= ^ = | = <从右到左

下一步是什么?

下一步本章将解释Java编程中的循环控制.本章将描述各种类型的循环,以及如何在Java程序开发中使用这些循环以及它们的用途.

d="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js">