荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: hbo (H.B.), 信区: Java
标  题: JAVA程序设计语言讲座 (fwd) calvin (转寄)
发信站: 深大荔园晨风站 (Thu Mar 12 09:50:00 1998), 转信

寄信人: ship.bbs@post.sti.jnu.edu.cn
标  题: JAVA程序设计语言讲座 (fwd)
发信站: 华南理工大学 BBS木棉站
日  期: Sun Oct 13 20:28:41 1996

*** Forwarded file follows ***

发信人: jianzi ( 甜甜的,胖胖的~~~), 信区: java
标  题: JAVA程序设计语言讲座
日  期: Sun Oct 13 09:15:10 1996

                JAVA程序设计语言讲座
第 一 部 分 Java入 门
第 三 章   运 算 符 和 表 达 式
王 克 宏   郁 欣   孙 元


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

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

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

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

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

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

      6.条 件 运 算 符 ( ?:)

      7.其 它 (包 括 分 量 运 算 符 · ,下 标 运 算 符 [],实 例 运 算 符
instanc eof,内 存 分 配
运 算 符 new,强 制 类 型 转 换 运 算 符 (类 型 ),方 法 调 用 运 算 符 () 等 )

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

                                  § 3.1算 术 运 算 符

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

      一 、 二 元 算 术 运 算 符 ,如 下 表 所 示



    运算符            用法           描述

       +              op1+op2         加

       -              op1-op2         减

       *              op1*op2         乘

       /              op1/op2         除

       %              op1%op2         取模(求余)




      Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的 连 接
,如 "abc"+"de",得
到 串 "abcde"。 我 们 将 在 第 七 章 中 讲 解 。

      与 C、 C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操 作 数 可 以 为 浮 点
数 , 如
37.2%10=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




                                  § 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

       (待 续 )


--
※ 来源:.深大荔园晨风站 bbs.szu.edu.cn.[FROM: 202.192.140.143]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店