温故而知新:Java中运算符和表达式

按 照 运 算 符 功 能 来 分 ,基 本 的 运 算 符 有下 面 几 类 :

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

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

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

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

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

6.条 件 运 算 符 ( ?:)

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

Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进行 字 符 串 的连 接,如 "abc"+"de",得到 串 "abcde"。 

与 C、 C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操作 数 可 以为浮点 数 , 如37.2%10=7.2。

i++与 ++i的 区 别:

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

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

关系运算符:

关 系 运 算 符 用 来 比 较 两 个 值 ,返 回 布 尔类 型 的值true或 false。

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

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

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

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

布尔逻辑运算符: 

    对 于 布 尔 逻 辑 运 算 , 先 求 出 运 算 符 左 边的 表 达 式 的 值 , 对 或 运 算 如 果 为 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溢 出的错 误 ,因 为 f!=0为false,所 以 就 不 需 要 对 a/f进 行 运 算 。

位运算符:

位 运 算 符 用 来 对 二 进 制 位 进 行 操作 ,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

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值