当前位置:首页 >> 小学教育 >>

java中运算符、表达式与语句


第3章 运算符、表达式与语句
?本章导读 ? 算术运算符和算术表达式 ? 关系运算符与关系表达式 ? 逻辑运算符与逻辑表达式 ? 赋值运算符与赋值表达式 ? 移位运算符 位运算符和条件运算符 ? instanceof 运算符 ? 一般表达式 ? 语句概述 ? 分支语句、循环语句和跳转语句
2012-7-24 1

3.1 算术运算符和算术

表达式
(1)加减运算符 加减运算的运算符号分别为+和?,是双目运算符。加减运 算的结合性是从左到右。加减运算的操作元是整型或浮点型数 据,加减运算符的优先级是4级。 (2)乘、除和求余运算符 乘、除和求余运算的运算符号为*、/、%,都是双目运算符。 *、/、% 运算符的结合性是从左到右,例如:2*3/8,先计算 2*3,然后再将得到的结果除以8。乘、除和求余运算的操作元 是整型或浮点型数据。*、/、%运算符的优先级是3级。

2012-7-24

2

(3)自增、自减运算符
自增、自减运算的运算符号为++、--,都是单目运算符,运 算符的优先级是2级。运算符可以放在操作元之前,也可以放在 操作元之后,但操作元必须是一个整型或浮点型变量(不能是常 量或表达式)。运算符的作用是使变量的值增1或减1,如: ++x,--x表示在使用x之前,先使x的值加(减)1。 x++,x--表示在使用x之后,使x的值加(减)1。 粗略地看,++x和x++的作用相当于x=x+1。但++x和x++的不同 之处在于,++x是先执行x=x+1再使用x的值,而x++是先使用x的 值再执行x=x+1。如果 x的原值是5,则: 对于y=++x;y的值为6。 对于y=x++;y的值为5,然后x的值变为6。

2012-7-24

3

(4)算术表达式
用算术符号和操作元连接起来的符合Java语法规则的式子,称为算术表 达式。如 x+2*y-30+3*(y+5) -12+n+(--n) (5)算术混合运算的精度 精度从“低”到“高”排列的顺序是: byte short int long float double Java将按运算符两边的操作元的最高精度保留结果的精度,例如:5/2的 结果是2,要想得到2.5,必须写成5.0/2或5.0f/2。 char型数据和整型数据运算结果的精度是int。例如:byte k=18; 那么‘H’+k; 的结果是int型,因此下列写法是不正确的, char ch=’H’+k; 应当写成: char ch=(char)(’H’+k);

2012-7-24

4

3.2关系运算符与关系表达式
关系运算符用来比较两个值的关系,关系运算符的运算结果是boolean型 数据,当运算符对应的关系成立时,运算结果是true,否则是false。 (1)大小关系运算符 大小关系运算的符号分别是>、>=、<、<=,都是双目运算符,操作元是 数值型的常量、变量或表达式。 例如,10<9的结果是false, 5>1的结果是true。 大小关系运算符的级别是6级。 (2)等与不等关系 等与不等关系运算的符号分别是 "=="和 "!=",都是双目运算符。运算 符的级别是7级。 (3)关系表达式 结果为数值型的变量或表达式可以通过关系运算符形成关系表达式。 例如,24>18,(x+y+z)>30+x等。

2012-7-24

5

3.3逻辑运算符与逻辑表达式
逻辑运算用来实现boolean型数据的逻辑“与”、“或”和“非”运算, 运算结果是boolean型数据。 (1)逻辑“与”和逻辑“或” 逻辑“与”和逻辑“或”运算的符号是"&&"、"||",是双目运算符,操 作元是boolean型的变量或求值结果是boolean型数据的表达式。 "&&"的运算法则是:当两个操作元的值都是true时,运算结果是true,否则 是false。 "||"的运算法则是:当两个操作元的值都是flase时,运算结果是false,否 则是true。 "&&"和"||"的级别分别是11和12级,结合性是左到右。 短路逻辑运算符: 逻辑运算符"&&"和"||"也称做短路逻辑运算符。 进行op1&&op2运算时,如果op1的值是false,"&&"运算符在运算时不再去 计算op2的值,直接就得出op1&&op2的结果是false。 当op1的值是true时,"||"运算符在运算时不再去计算op2的值,直接就得 出op1||op2的结果是true。
2012-7-24 6

(2)逻辑“非”

逻辑“非”运算的符号是"!",是单目运算符,操作元在左 面。当操作元的值是TURE时,运算结果是FALSE;反之为TURE。 "!"的运算级别是2级,结合性从右到左。例如,!!X 相当 于!(!X)。
(3)逻辑表达式 结果为boolean型的变量或表达式可以通过逻辑运算符形成 逻辑表达式。例如,24>18 && 4<0,x!=0 || y!=0。

2012-7-24

7

3.4赋值运算符与赋值表达式
赋值运算符:=。 赋值运算符是双目运算符,左面的操作元必须是变量,不 能是常量或表达式。 设x是一个整型变量,y是一个boolean型变量,x=120和 y =false都是正确的赋值表达式,赋值运算符的优先级较低, 是14级,结合方向右到左。 赋值表达式的值就是“=”左面变量的值。注意不要将赋值 运算符“=”与等号运算符“==”混淆。

2012-7-24

8

3.5 移位运算符
位运算符用来对二进制位进行操作,分为左移位操作和右移位操作。 (1)左移位运算符 左移位运算的符号为<<,是双目运算符。左移位运算符左面的操作元称 作被移位数,右面的操作数称作移位量,操作元必须是整型类型的数据。 假设a是一个被移位的整型数据,n是位移量。 a<<n运算的结果是通过将a的所有位都左移n位,每左移一个位,左边的 高阶位上的0或1被移出丢弃,并用0填充右边的低位。 例如int类型数据7的二进制表示是 00000000 00000000 00000000 00000111 可以对整型数据进行移位运算:左移位或右移位运算。例如,7<<1 得到的结果是:00000000 00000000 00000000 00001110 整数 14 对于byte或short型数据,a<<n的运算结果是int型精度。当进行 a<<2 运算时,计算系统首先将a升级为int型数据,对于正数将高位用0填充; 负数用1填充。 注:如果把a<<1的结果赋值给一个byte型变量就必须进行强制转换运算: byte b=(byte)(a<<1);
2012-7-24 9

(2)右移位运算符
右移位运算的符号为">>",是双目运算符。假设a是一个 被移位的整型数据,n是位移量。 a>>n运算的结果是通过将a的所有位都右移n位,每右移一 个位,右边的低阶位被移出丢弃,并用0或1填充左边的高位, a是正数用0填充,负数时用1填充。 因此,a每右移一次,如果该数的每一计算有效位都没有 从低位移出时,就相当于将a除以2并舍弃了余数。整数不断右 移位的最后结果一定是0,而负数不断右移位的最后结果是-1。
对于byte或short型数据,a>>n的运算结果是int型精度。

下面的例子3-1中,显示了类型转换的结果。效果如图3-1 所示.

2012-7-24

10

例子3-1效果图

2012-7-24

11

3.6位运算符
(1)“按位与”运算符 "&"是双目运算符,对两个整型数据a、b按位进行运算,运 算结果是一个整型数据c。运算法则是:如果a、b两个数据对应 位都是1,则c的该位是1,否则是0。如果b的精度高于a,那么 结果c的精度和b相同。 (2)“按位或”运算符 "|"是双目运算符。对两个整型数据a、b按位进行运算,运 算结果是一个整型数据c。运算法则是:如果a、b两个数据对应 位都是0,则c的该位是0,否则是1。如果b的精度高于a,那么 结果c的精度和b相同。 (3)“按位非”运算符 "~"是单目运算符。对一个整型数据a按位进行运算,运算结 果是一个整型数据c。运算法则是:如果a对应位是0,则c的该 位是1,否则是0。
2012-7-24 12

(4)“按位异或”运算符
"^"是双目运算符。对两个整型数据a、b按位进行运算, 运算结果是一个整型数据c。运算法则是:如果a、b两个数据 对应位相同,则c的该位是0,否则是1。如果b的精度高于a, 那么结果c的精度和b相同。 位运算符在操作逻辑型数据时,与逻辑运算符&&、||、! 不同的是位运算要计算完a和b之后再给出运算的结果。 在下面的例子3-2中,利用“异或”运算的性质,对几个 字符进行加密并输出密文,然后再解密。运行结果见图3-2。

2012-7-24

13

3.7 条件运算符
条件运算符是一个3目运算符,它的符号是:"?:",需 要连接3个操作元,用法如下: op1?op2:op3 要求第一个操作元op1的值必须是boolean型数据。 运算法则是:当op1的值是true时,op1?op2:op3运算的结 果是op2的值;当op1的值是false时,op1?op2:op3运算的结果 是op3的值。 例如,12>8?100:200的结果是100; 12<8?100:200的结果是200。

2012-7-24

14

3.8instanceof 运算符
该运算符是双目运算符,左面的操作元是一个对象,右 面是一个类。当左面的对象是右面的类创建的对象时,该运 算的结果是true,否则是false。

2012-7-24

15

3.9一般表达式
Java的一般表达式就是用运算符及操作元连接起来 的符合Java规则的式子,简称表达式。一个Java表达 式必须能求值,即按着运算符的计算法则,可以计算 出表达式的值。 例如,假如 int x=1,y=-2,n=10; 那么,表达式 x+y+(--n)*(x>y&&x>0?(x+1):y) 的值是 int型数据,结果为17。

2012-7-24

16

3.10语句概述

Java里的语句可分为以下5类: (1)方法调用语句 在第4章将介绍类、对象等概念,对象可以调用类中的方法产生行为,例如:
reader.nextInt();

(2)表达式语句 一个表达式的最后加上一个分号就构成了一个语句,称作表达式语句。分 号是语句不可缺少的部分。例如,赋值语句: x=23; (3)复合语句 可以用“{”和“}”把一些语句括起来构成复合语句,一个复合语句也称 作一个代码块。例如,
{ }

z=23+x; System.out.println("hello");

(4)控制语句 控制语句包括:条件分支语句、循环语句和跳转语句。 (5)package 语句和 import语句 package语句和import语句与类、对象有关,将在第4章讲解。
2012-7-24 17

3.11分支语句
1.条件分支语句 (1)if-else语句. if-else语句是Java中的一条语句,由一个“if”、“else”和两 个复合语句按一定格式构成,if-else 语句的格式如下:
if(表达式){ 若干语句 } else{ 若干语句 }

一条if-else语句的作用是根据不同的条件产生不同的操作,执行法则如 下: if 后面( )内的表达式的值必须是boolean型的。 如果表达式的值为true,则执行紧跟着的复合语句;如果表达式的值为 false,则执行else后面的复合语句。
2012-7-24 18

(2)多条件if-else if-else语句

程序有时需要根据多条件来选择某一操作,这时就可以使用if-else if-else 语句。if-else if-else语句是Java中的一条语句,由一个“if”、 若干个“else if”、 一个“else”与若干个复合语句按一定规则构成。语句的格式如下:
if(表达式1){ 若干语句 } else if(表达式2){ 若干语句 } ? ? else if(表达式n){ 若干语句 } else{ 若干语句 }
2012-7-24 19

if-else if-else语句的执行法则如下:
有时为了编程的需要,复合语句中可以没有任何语句。一条if-else if-else语句的作用是根据不同的条件产生不同的操作,执行法则如下: if 以及else if后面( )内的表达式的值必须是boolean型的。 该语句执行时,首先计算if后括号中的表达式的值,如果该表达式的值 为true,则执行紧跟着的复合语句,然后就结束整个语句的执行;如果if 后括号中的表达式的值为false,就依次再计算后面的else if的表达式的 值,直到出现某个表达式的值为true为止,然后执行该else if后面的复合 语句,结束整个语句的执行。如果所有的表达式的值都是false,就执行 else后面复合语句,结束整个语句的执行。 在下面的例子3中,用户在键盘输入3个数,程序判断这3个数能构成什么 形状的三角形。运行结果见图3-3。

2012-7-24

20

2.switch开关语句
switch 语句是多分支的开关语 句,它的一般格式定义如下: switch(表达式){ case 常量值1: 若干个语句 break; case 常量值2: 若干个语句 break; ? ? ? case 常量值n: 若干个语句 break; default: 若干语句 }

switch语句中表达式的值必须是 整型或字符型;常量值1到常量值 n必 须也是整型或字符型。switch语句首 先计算表达式的值,如果表达式的值 和某个case 后面的常量值相同,就执 行该case里的若干个语句,直到碰到 break语句为止。若没有任何常量值与 表达式的值相同,则执行default后面 的若干个语句。其中default是可有可 无的,如果它不存在,并且所有的常 量值都和表达式的值不相同,那么 switch语句就不会进行任何处理。需 要注意的是,在同一个switch语句中, case后的常量值必须互不相同。 下面的例子4使用了switch语句, 用户在键盘输入一个代表月份的整数, 程序输出是该月是在年度的第几季度。 运行结果见图3-4.
21

2012-7-24

例子3-4效果图

2012-7-24

22

3.12循环语句
1.while循环 while语句的一般格式:
while(表达式){ 若干语句 }

while语句由关键字while、括号中的一个求值为boolean型数据的表达 式和一个复合语句组成,其中的复合语句称作循环体,循环体只有一条 语句时,大括号“{}”可以省略,但最好不要省略,以便增加程序的可读 性。表达式称作循环条件。 while语句的执行规则是:
(1)计算表达式的值,如果该值是true时,就进行(2),否则进行(3)。 (2)执行循环体,再进行(1) (3)结束while语句的执行

while语句执行规则如流程图3- 5所示。
2012-7-24 23

while语句执行规则 do while语句执行规则

流程图3- 5 流程图3- 6

2012-7-24

24

2.do-while循环
一般格式:
do{
若干语句 } while(表达式);

do-while循环和while循环的区别是do-while的循环体至少被 执行一次,如图3.6所示。 下面的例子5分别用while和do-while循环计算常数e的近似值 e=1+1/1+1/2!+1/3!+? ?。

2012-7-24

25

3.for循环
for语句的一般格式:
for (表达式1;表达式2;表达式3){ 若干语句 }

for语句由关键字for、括号中用分号分割的3个表达式,以及一个复合语 句组成,其中的“表达式2”必须是一个求值为boolean型数据的表达式,而 复合语句称作循环体。

for语句的执行规则是(流程图3-8):
(1)计算“表达式1”,完成必要的初始化工作 (2)判断“表达式2”的值,若“表达式2”的值为true, 则进行(3),否则进 行(4)。 (3)执行循环体,然后计算“表达式3”,以便改变循环条件,进行(2)。 (4)结束for语句的执行. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如, 6=1+2+3。下面的例子6使用for循环计算出1000内的全部完数.效果如图3-9.
2012-7-24 26

for 语句执行规则

流程图3- 8

2012-7-24

27

例子3-6效果图

2012-7-24

28

3.13跳转语句
跳转语句是指用关键break或continue加上分号构成的语句, 例如: break; 在循环语句的循环体中使用跳转语句。在一个循环中,比如循 环50次的循环语句中,如果在某次循环体的执行中执行了break语 句,那么整个循环语句就结束。 如果在某次循环体的执行中执行了continue语句,那么本次循 环就结束,即不再执行本次循环中循环体中continue语句后面的 语句,而转入进行下一次循环。 下面的例子7和例子8使用的跳转语句。

2012-7-24

29

2012-7-24

30


相关文章:
JAVA运算符表达式及语句
JAVA运算符表达式语句 隐藏>> 一 运算符和表达式(一) 运算符对各种类型的数据进行加工的过程成为运算,表示各种不同运算的符号称为运算符,参与运算的数据 称为操...
Java运算符和表达式
Java运算符和表达式_计算机软件及应用_IT/计算机_专业资料。实验 04:运算符和表达式实验目的: 1. 熟悉运算符的作用、优先级和结合方向 2. 认识 Java 的表达式,理...
Java运算符表达式语句【作业】
Java运算符表达式语句【作业】_教育学_高等教育_教育专区。Java运算符表达式语句练习...求 1+2+3……+1000 的和,把和输出,计算每步结果中有多少个最后以 8 结尾...
Java数据类型、运算符和表达式
Java数据类型、运算符和表达式_计算机软件及应用_IT/计算机_专业资料。Java数据类型...三、实验基本原理 Java 的数据类型的设置与 C 语言相近。其不同之处在于:首先...
23Java运算符和表达式
23Java运算符和表达式_计算机软件及应用_IT/计算机_专业资料。2.3 Java 运算符和表达式 运算符和表达式是构成程序语句的要素,必须切实掌握灵活运用。Java 提供了多...
java--运算符和语句
java--运算符和语句_互联网_IT/计算机_专业资料。java,运算符和基本语句传...控制语句 2.1 分支语句-IF 视频 ..\..\..\javase_avi\day03\05-if ...
Java语言入门-第三章 运算符和表达式
Java 语言人门第 三章运算符和表达式 §3.1 算术运算符§3.2 关系运算符§3.3 布尔逻辑运算符§3.4 位运算符 第三章 运算符和表达式 运算符指明对操作数所...
Java程序设计-系列练习2-变量运算符和表达式
Java程序设计-系列练习2-变量运算符和表达式_计算机软件及应用_IT/计算机_专业...(知识点:移位运算符用法) 注:将命令行参数赋给 a,n(int 型)使用的语句为:...
02.2.Java基础-运算符、表达式【作业】
02.2.Java基础-运算符表达式【作业】_计算机软件及应用_IT/计算机_专业资料...求 1+2+3……+1000 的和,把和输出,计算每步结果中有多少个最后以 8 结尾...
JAVA编程 - 第三章 运算符、表达式和语句
第三章 运算符表达式和语句 1. 编写应用程序求:1!+ 2!+ …+10! public class javahomework1 { public static void main(String args[]){ long sum=0,...
更多相关标签:
java运算符和表达式 | java三元运算符 语句 | java 表达式语句 | el表达式三元运算符 | 正则表达式匹配运算符 | el表达式三目运算符 | vb运算符与表达式 | el表达式运算符 |