当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级Java运算符和表达式学习教程
发布时间:2011/12/26 17:18:57 来源:城市学习网 编辑:ziteng

第 3 章 运算符和表达式

  运算符指明对操作数所进行的运算。按操作数的数目来分 ,可以有一元运算符 (如 ++、--),二元运算符(如 +、>)和三元运算符 (如?:),它们分别对应于一个、两个和三个操作数 。 对于一元运算符来说 ,可 以 有 前 缀 表 达 式 (如++i) 和后缀表达式 (如 i++),对于二元运算符来说则采用中缀表达式(如a+b)。 按照运算符功能来分,基本的运算符有下面几类 :

  1.算术运算符 (+,-,*,/,%,++,--)

  2.关系运算符 (>,<,>=,<=,==,!=)

  3.布尔逻辑运算符 (!,&&,||)

  4.位运算符 (>>,<<,>>>,&,|,^,~ )

  5.赋值运算符 (=,及其扩展赋值运算符如+=)

  6.条件运算符 ( ?:)

  7.其它

  (包括分量运算符• ,下标运算符 [],实例运算符 instance of,内存分配运算符new,强制类型转换运算符(类 型 ),方法调用运算符 () 等 )

  本章中我们主要讲述前6类运算符 。

§ 3.1算 术 运 算 符

  算 术 运 算 符 作 用 于 整 型 或 浮 点 型 数 据 ,完 成 算 术 运 算 。

  一 、 二元算术运算符

  如下表所示运算符用法描述

  + op1+op2 加

  - op1-op2 减

  * op1*op2 乘

  / op1/op2 除

  % op1%op2 取模(求余)

  Java对加运算符进行了扩展,使它能够进行字符串的连接 ,如 "abc"+"de",得到串 "abcde"。 我们将在第七章中讲解。 与C、 C++不同,对取模运算符%来说,其操作数可以为浮点数, 如 37.2=7.2。

  二 、 一元算术运算符

  如 下 表 所 示 :

  运算符 用法 描述

  + +op 正值

  - -op 负值

  ++ ++op,op++ 加1

  -- --op,op-- 减1

  i++与 ++i的 区 别

  i++在使用i之后,使 i的值加 1,因此执行完 i++后,整个表达式的值为 i,而 i的 值变为 i+1。

  ++i在使用i之前,使 i的值加 1,因此执行完 ++i后 ,整个表达式和 i的值均为 i+1。

  对 i--与 --i同 样 。

  例 3.1.下 面 的 例 子 说 明 了 算 术 运 算 符 的 使 用

  public class ArithmaticOp{

  public static void main( String args[] ){

  int a=5+4; //a=9

  int b=a*2; //b=18

  int c=b/4; //c=4

  int d=b-c; //d=14

  int e=-d; //e=-14

  int f=e%4; //f=-2

  double g=18.4;

  double h=g%4; //h=2.4

  int i=3;

  int j=i++; //i=4,j=3

  int k=++i; //i=5,k=5

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

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

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

  System.out.println("d = "+d);

  System.out.println("e = "+e);

  System.out.println("f = "+f);

  System.out.println("g = "+g);

  System.out.println("h = "+h);

  System.out.println("i = "+i);

  System.out.println("j = "+j);

  System.out.println("k = "+k);

  }

  }

  其结果为:

  C:\>java ArithmaticOp

  a = 9

  b = 18

  c = 4

  d = 14

  e = -14

  f = -2

  g = 18.4

  h = 2.4

  i = 5

  j = 3

  k = 5 [NextPage]

§ 3.2关 系 运 算 符

  关系运算符用来比较两个值,返回布尔类型的值 true或false。关系运算符都是二元运算符,如下表所示 :

  运算符 用法 返回true的情况

  > op1>op2 op1大于op2

  >+ op1>=op2 op1大于或等于op2

  < op1<op2 op1小于op2

  <= op1<=op2 op1小于或等于op2

  == op1==op2 op1与op2相等

  != op1!=op2 op1与op2不等

  Java中 ,任何数据类型的数据 (包括基本类型和组合类型)都可以通过==或 !=来比较是否相等 (这与 C、 C++不同 )。

  关系运算的结果返回true或 false,而不是C、C++中的1或 0。

  关系运算符常与布尔逻辑运算符一起使用,作为流控制语句的判断条件 。 如

  if( a>b && b==c)

§ 3.3布尔逻辑运算符

  布尔逻辑运算符进行布尔逻辑运算,如下表所示 :

  op1 op2 op1&&op2 op1||op2 !op1

  false false false false true

  false true false true true

  true false false true false

  true true true true false

  }@@@

  •&&、‖ 为二元运算符,实现逻辑与、逻辑或。

  •! 为一元运算符,实现逻辑非。

  •对于布尔逻辑运算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表达式的结果为true,不必对运算符右边的表达式再进行运算;同样,对与运算,如果左边表达式的值为false,则不必对右边的表达式求值,整个表达式的结果为false。 下面的例子说明了关系运算符和布尔逻辑运算符的使用。

  @@@[

  public class RelationAndConditionOp{

  public static void main( String args[] ){

  int a=25,b=3;

  boolean d=a<b; //d=false

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

  int e=3;

  if(e!=0 && a/e>5)

  System.out.println("a/e = "+a/e);

  int f=0;

  if(f!=0 && a/f>5)

  System.out.println("a/f = "+a/f);

  else

  System.out.println("f = "+f);

  }

  }

  其运行结果为:

  C:\>java RelationAndConditionOp

  a<b = false

  a/e = 8

  f = 0

  注意 :上例中 ,第二个if语句在运行时不会发生除0溢出的错误,因为e!=0为false,所以就不需要对 a/e进行运算 。

§ 3.4位运算符

  位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符 :

  位 运 算 符 中 ,除 ~ 以 外 ,其余均为二元运算符 。

  操 作 数 只 能 为 整 型 和 字 符 型 数 据 。

  3.4.1补 码

  Java使用补码来表示二进制数 ,在补码表示中 ,最高位为符号位 ,正数的符号位为0,负数为 1。 补码的规定如下 :

  对 正 数 来 说 ,最 高 位 为 0,其 余 各 位 代 表 数 值 本 身 (以 二 进 制 表 示 ),如 +42的 补 码 为 00101010。

  对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码 。 如-42的 补 码 为 11010110 (00101010 按 位 取 反 11010101 +1 11010110 ) 用补码来表示数,0的补码是唯一的,都为00000000。 (而在原码,反码表示中,+0和 -0的表示是不唯一的,可参见相应的书籍 )。而且可以用111111表示 -1的补码(这也是补码与原码和反码的区别)。

  3.4.2按位取反运算符 ~

  ~ 是一元运算法,对数据的每个二进制位取反 ,即把 1变为 0,把0变为1。

  例 如 :

  0010101

  ~

  1101010

  注 意 ,~ 运算符与 - 运算符不同 ,~ 21≠ -21。

  3.4.3按 位 与 运 算 符 &

  参与运算的两个值,如果两个相应位都为1,则该位的结果为 1,否则为0。 即 :

  0 & 0 = 0,0 &1 = 0,1 & 0 = 0,1 & 1 = 1

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15080520号-20
珠峰网 版权所有 All Rights Reserved