java运算符、表达式与语句.ppt_第1页
java运算符、表达式与语句.ppt_第2页
java运算符、表达式与语句.ppt_第3页
java运算符、表达式与语句.ppt_第4页
java运算符、表达式与语句.ppt_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章Java实用技术 运算符 表达式与语句 运算符的作用是与一定的运算数据组成表达式来完成相应的运算 对不同的数据类型 有着不同的运算符 对运算符 有运算对象 操作数 个数及类型 运算优先级 结合性等特性 Java语言对运算符的优先级 结合性和求值顺序有明确的规定 从根本上消除了运算符运算过程的二义性以及结果不统一的弊端 运算符的优先级是指不同运算符在混合运算中执行的先后顺序 在Java语言中共有17种优先级 每个运算符分属确定的一个优先级别 Java语言严格按照运算符的优先级由高到低地顺序执行各种运算 运算符的结合性确定同级运算符的运算顺序 左结合性规定 运算数据先与左边的运算符结合 然后与右边的运算符结合 右结合性正好相反 3 1算术运算符算术运算符按操作数的多少可分为一元 或称单目 和二元 或称双目 两类 一元运算符一次对一个操作数进行操作 二元运算符一次对两个操作数进行操作 算术运算符的操作数类型是数值类型 1 一元算术运算符 表3 1一元算术运算符 前置运算 位于操作数前 如 x x 对前置运算变量先操作后引用后置运算 位于操作数后 如x x 对后果置运算变量先引用后操作inta 10 b b a a 11 b 10intx 10 y y x x 9 y 9 2 二元算术运算符算术运算符的第二种类型是二元运算符 这种运算符并不改变操作数的值 而是返回一个必须赋给变量的值 表3 2列出了二元算术运算符 二元算术运算符具有左结合性 表3 2二元算术运算符 双目运算符 如两个操作数都是整型 则结果是整型 否则是实型 5 2结果是2而不是2 5 运算符可用于求整数或实数除的余数 例 inta 7 intb 2 a b 3 整除a b 1 取余注意 算术运算符的总体原则是先乘除 再加减 括号优先 整数除法会直接去掉小数 而不是进位 对取模运算符 来说 其操作数可以为浮点数 如 37 2 10 7 2 Java对加运算符进行了扩展 使它能够进行字符串的连接 如 Hello World 得到串 HelloWorld 3 算术表达式用算术符号和操作元连接起来的符合java语法规则的式子 称为算术表达式 例如 x 2 y 30 3 y 5 12 n 算术混合运算的精度按表达式中精度最高的计算char int int charch char H k 3 2关系运算符关系运算符用于确定一个数据与另一个数据之间的关系 即进行关系运算 所谓关系运算是比较运算 将两个值进行比较 关系运算的结果值为true或false 布尔型 表3 3列出了Java语言提供的6种关系运算符 它们都是双目运算符 在这里要指出的是 等于运算符 不要与赋值运算符 混淆 以至于关系运算变成了赋值运算 表3 3关系运算符 关系表达式通过关系运算符形成的表达式例如 24 18 x y z 30 x 3 3逻辑运算符逻辑运算符可以对布尔类型的数据 布尔常量 布尔变量 关系表达式和逻辑表达式等 进行运算 结果也为布尔类型 表3 4列出了Java语言的逻辑运算符 逻辑运算规则如表3 5所示 表3 4布尔运算符 表3 5逻辑运算真值表 逻辑运算符 非 5 3 x 3 5 表达式结果为true x为true 逻辑表达式由逻辑运算符构成的表达式24 18 18 24 3 4赋值运算符赋值运算符都是二元运算符 具有右结合性 1 简单赋值运算符 2 复合赋值运算符 复合赋值运算符的右边是一个整体 表3 6中的表达式是等价的 表3 6复合赋位运算符 3 5位运算符位运算符用来对二进制位进行运算 运算操作数应是整数类型 结果也是整数类型 表3 7列出了Java的位运算符 表3 7位运算符列表 表3 8位运算真值表 Java用补码表示二进制数 X 补 符号位0 XX 0 X 补 000 000X 0 X 补 按位取反 1X 01的补码表示 4个字节 00000000000000000000000000000001 1的补码表示 4个字节 11111111111111111111111111111111 4 位运算符 续一 4 位运算符 续二 按位与运算 全1得1 有0得0 参与运算的两个值 如果两个相应位都为1 则该位的结果为1 否则为0 即 0 0 0 0 1 0 1 0 0 1 1 1例 a 00000000000000000000000000000111 b 10000001101001011111001110101011c 00000000000000000000000000000011 4 位运算符 续三 按位或运算 有1得1 全0得0 参与运算的两个值 如果两个相应位都是0 则该位结果为0 否则为1 即 0 0 0 0 1 1 1 0 1 1 1 1例 若a 1 b 2 则a b 3 按位异或运算 相异得1 相同得0 参与运算的两个值 如果两个相应位的某一个是1 另一个是0 那么按位异或 在该位的结果为1 也就是说如果两个相应位相同 输出位为0 否则为1 即 0 0 0 0 1 1 1 0 1 1 1 0例 若a 1 b 2 则a b 3 4 位运算符 续四 按位取反运算 属于一元运算符 它只对一个自变量进行操作 按位取反生成与输入位相反的值 若输入0 则输出1 输入1 则输出0 即 0 1 1 0例 若a 4 则 a 5 左移位运算符 运算符 执行一个左移位 作左移位运算时 右边的空位补0 在不产生溢出的情况下 数据左移1位相当于乘以2 例 inta 64 b b a 1 b 128 4 位运算符 续五 右移位运算符 与 算术右移运算符 执行一个右移位 带符号 左边按符号位补0或1 例 inta 16 b b a 2 b 4逻辑右移运算符 是0填充的右移 它执行的是不带符号的移位 即对以补码表示的二进制数操作时 在带符号的右移中 右移后左边留下的空位中添入的是原数的符号位 正数为0 负数为1 在不带符号的右移中 右移后左边留下的空位中添入的一律是0 4 位运算符 续六 注意事项在移位运算中 int类型 实际移位数 第2个操作 32long类型 实际移位数 第2个操作 64思考练习8 328 348 648L 66位右移和左移程序异或加密解密 结果是8 结果是2 结果是8 结果是2 3 6条件运算符条件运算符是一种三元运算符 它的格式如下 Operand Expression1 Expression2在这个式子中 先计算Operand的真假 若为真 则计算并返回Expression1 若为假 则计算并返回Expression2 例如 a b a b 这个表达式将返回a和b中较大的那个数值 3 7字符串运算符运算符 可以实现两个或多个字符串的连接 也可实现字符串与其他类对象的连接 在连接时 其他类对象会被转换成字符串 另外 运算符 把两个字符串连接的结果放进第一个字符串里 3 8表达式 表达式是由操作数和运算符按一定的语法形式组成的符号序列 3 8 1类型转换在一个表达式中可能有不同类型的数据进行混合运算 这是允许的 但在运算时 Java将不同类型的数据转换成相同类型 再进行运算 1 自动类型转换 表3 9不同类型数据之间的转换规则 2 强制类型转换 表3 10不会丢失信息的类型转换 3 表达式求值中的自动类型提升Java语言对表达式求值的自动类型提升规则如下 所有byte和short类型提升为int类型 若一个操作数是long类型 则整个表达式提升为long类型 若一个操作数是float类型 则整个表达式提升为float类型 若有double类型 则表达式值为double类型 自动类型提升对数据的运算带来了方便 但也容易引起编译错误 3 8 2优先级 表3 11运算符优先级 3 9语句和块 1 语句在Java语言中 有下面几类语句 空语句 标识语句 声明语句 表达式语句 分支语句 循环语句 跳转语句 同步语句和异常语句等 有两种基本的语句 表达式语句和声明语句 1 表达式语句 赋值表达式 包含赋值运算符 或复合赋值运算符之一 或 的前后缀形式 方法调用 无论它是否有返回值 对象创建表达式 用new来创建一个对象的表达式 2 声明语句例如 inta 2 块用一对花括号 将零个或多个语句括起来 就构成一个块 也称复合语句 在块中允许包含另一个块 块嵌套 在Java语言中 允许一个块出现在任何单一语句可以出现的地方 块体现了Java面向对象程序设计的封装概念 在一个块中声明的局部变量的作用域是该变量的声明开始点到最小的包含其声明的块结束 3 10instanceof运算符 Instanceof是双目运算符 左面的操作元是一个对象 右面是一个类 当左面的对象是右面的类创建的对象时 该运算结果为true 否则为false 3 11常用Java数值计算方法 在Java的类Math中包含了一些数值常量 如E和PI 以及一些基本的数值计算方法 如指数 对数 平方根和三角函数等 为用户程序进行数值计算带来了方便 表3 12列出了一些常用的数值计算方法 表3 12类Math中常用的数值计算方法 续表 分支结构又称为选择结构 是在两种或两种以上的多条执行路径中选择一条执行的控制结构 选择语句提供了一种控制机制 使得程序根据相应的条件去执行对应的语句 3 11分支语句 1 if else语句单分支 if condition statement 控制流程 先对condition的值进行判断 若condition的值为true 则程序执行语句statement 否则就转去执行if语句的后续语句 1 if else语句 双分支 if condition statement1 elsestatement2 控制流程 先对condition的值进行判断 condition的值为true 则程序执行语句statement1 否则执行语句statement2 1 if else语句 多分支 if嵌套if condition1 statement1 elseif condition2 statement2 elseif condition3 statement3 elsestatementN 最近未匹配原则 即else总与离它最近的尚未匹配的if相匹配 流程图结构 选择语句 语法格式1if 条件表达式 语句或语句序列 false 选择语句 语法格式2if 条件表达式 语句或语句序列1 else语句或语句序列2 选择语句 语法格式3if 条件表达式1 语句或语句序列1 elseif 条件表达式2 语句或语句序列2 else语句或语句序列n 选择语句应用举例 例3 3 2 switch语句 switch语句的一般格式如下 switch 表达式 case break case break case break default break switch注意事项 switch表达式与case常量表达式的类型必须是整形或字符型的 不能是关系表达式和逻辑表达式 使用switch语句时 需要注意的是 各个case后的常量值value应各不相同 通常在每一种case情况后都应使用break语句 否则 遇到第一个相等情况后 下面break前的所有语句都会被执行 包括default后面的语句 若有的话 各个分支的statement可以是一条或多条语句 不必使用复合语句 不同case后的语句statement相同时 可以合并多个case子句 switch语句在用表达式的值比较每一个case后的值value时 是从前往后顺序进行的 若各个值value互不相同 则case子句的顺序可任意 Switch语句例题 例3 4 一个循环一般包括4个部分 初始化部分 用来设置循环的一些初始条件 如累加器清零等 循环体部分 重复执行的一段程序 可以是一条语句 也可以是一块语句 循环条件变更部分 在本次循环结束 下一次循环开始前执行的语句 常用形式为一个计数器值的增减 终止部分 一般为布尔表达式 每一次循环都要对该表达式求值 以检查是否满足循环终止条件 3 12循环语句 1 while语句 当型循环 while 条件表达式 循环体语句 控制流程 先判断条件表达式的值 当条件表达式的值为true 则执行循环体 然后再判断条件 直到条件表达式的值为false 停止执行语句 注 while语句的循环体可能一次也不会执行 while语句可能陷入 死循环 2 do while语句 直到型循环 do 循环体语句 while 条件表达式 控制流程 先执行一次循环体中的语句 然后测试布尔表达式的值 如果布尔表达式的值为真 那就继续执行循环体 do while语句将不断地测试布尔表达式的值并执行循环体中的内容 直到布尔表达式的值为假为止 注 do while语句的循环体至少执行一次 另外do while语句是可以与while语句互换的 循环语句 while语法格式while 条件表达式 语句序列 do while语法格式do 语句序列 while 条件表达式 While循环例题 例3 5 3 for语句 for 表达式1 表达式2 表达式3 statements 说明 表达式1是初始条件 是为循环变量置初值 它在循环开始的时候执行一次 表达式2是终止条件 决定循环是否继续 该条件表达式在每次循环的时候均作判断 若结果为false 则循环结束 表达式3是增量 用来修改循环变量 控制变量每循环一次后按什么方式变化 3 for语句 for语句中循环控制变量必须是有序类型 常用的有整型 字符型 布尔型 循环控制变量初值和终值通常是与控制变量类型相一致的一个常量 也可以是表达式 循环次数由初值和终值决定 for语句的执行过程如下 按表达式1将初值赋给循环控制变量 按表达式2判断控制变量的值是否越过终值 未越过终值则转 越过终值则转步骤 执行循环体 按表达式3修改控制变量 返回 结束循环 4 循环嵌套循环嵌套是指在某个循环语句的循环体中又包含另一个循环语句 也称多重循环 外面的循环语句称为 外层循环 外层循环的循环体中的循环称为 内层循环 循环语句 for语法格式for 表达式1 表达式2 表达式3 语句序列 for语句应用举例 例3 6 3 13跳转语句 Java提供了break continue和return三个跳转语句 1 break语句break语句常用于提前从循环退出或跳过switch结构的其余部分 break 此时 break语句的功能是终止break所在的循环 转去执行其后的第一条语句 其特点 一是在有多重循环时 它只能使循环从本层的循环跳出来 二是此时程序一定转移到本层循环的下一个语句 用break语句终止swtich语句 控制流程会马上转到switch语句下方的语句 2 continue语句 continue语句在while for或do while结构中执行时跳过该结构体的其余语句 进入下一轮循环 continue 用于跳过当前的for while或者do while循环 即跳过循环体中continue语句后面的语句 回到循环体的条件测试部分继续执行 只能跳过本次循环的剩余语句 3 Return语句 return语句用来明确地从一个方法返回 如果使用return语句返回一个值 其格式如下 return 表达式 classTest publicstaticvoidmain Stringargs booleant true System out println Beforethereturn if t return System out println Thiswon texecute 跳转语句例题 例3 7例3 8 谢谢 条件选择语句 if语句if语句是一个条件表达式 若条件表达式为真 则执行下面的代码块 否则跳过该代码块单行代码if 布尔表达式 语句 多行代码if 布尔表达式 语句 条件选择语句 示例importjava io IOException publicclasstest3 publicstaticvoidmain Stringargs throwsIOException System out println 你喜欢javaa charlike char System in read if like Y like y System out println good 条件选择语句 if else语句根据判定条件的真假执行不同的操作语法if 布尔表达式 语句块1 else 语句块2 条件选择语句 示例importjava io IOException classTest publicstaticvoidmain Stringargs throwsIOException System out println 请输入你的成绩 chara char System in read charb char System in read intscore a 0 10 b 0 if score 60 System out println 你及格了 elseSystem out println 你没及格了 C javaTest请输入你的成绩 65你及格了 C 条件选择语句 if语句的嵌套if语句中的语句块又出现了if语句若没有配对符 则else与最近的if语句配对例inta 1 b 2 c 3 if a c if c b System out print c elseSystem out print a 一定要明确地写上配对符 修改配对关系 if a c if c b System out print c else System out print a 默认Java虚拟机 if a c if c b System out print c elseSystem out print a 条件选择语句 条件运算符三元运算符 ternaryoperator 表达式1 表达式2 表达式3表达式1的结果为布尔型 表达式2和表达式3的类型相同表达式1 true 表达式2表达式1 false 表达式3Shortcutif elsestatement if 表达式1 表达式2else表达式3 条件选择语句 示例importjava io IOException classTest publicstaticvoidmain Stringargs throwsIOException System out println 请输入三个0 9之间的数 bytex byte System in read bytey byte System in read bytez byte System in read x 48 y 48 z 48 byten x y x y bytem n z n z System out println max m char0 48 char1 49 x x 48 y y 48 x z 48 C javaTest请输入三个0 9之间的数370max 7C 条件选择语句 示例importjava io IOException classTest publicstaticvoidmain Stringargs throwsIOException System out println 中国足球能否进入世界杯 System out println 是 y 否 n 不一定 p charc char System in read if c y System out println Cool elseif c n System out println Bad elseif c p System out println Sorry elseSystem out println InputError 逐条if语句进行判断条件匹配 进入语句体否则对if语句继续匹配 switch 开关语句 根据表达式的结果执行多个操作中的一个语法switch 表达式 case值1 语句序列 break case值2 语句序列 break default 默认语句 与任一case值不匹配 则进入default语句 switch 开关语句 语法switch 表达式 case值1 语句序列 break case值2 语句序列 break default 默认语句 几点注意switch语句表达式的结果必须是byte char short int类型表达式的结果依次与每个case子句比较break语句用于跳出switch语句default子句是可选的 switch 开关语句 示例1importjava io IOException classTest publicstaticvoidmain Stringargs throwsIOException System out println 中国足球能否进入世界杯 System out println 是 y 否 n 不一定 p charc char System in read switch c case y System out println Cool break case n System out println Bad break case p System out println Sorry break default System out println InputError break 示例2 publicclassTest publicstaticvoidmain String args intmonth 2 year 2000 intnumDays 0 switch month case1 case3 case5 case7 case8 case10 case12 numDays 31 break case4 case6 case9 case11 numDays 30 break case2 if year 4 0 switch 开关语句 循环控制语句 反复执行同一代码块直到满足结束条件组成循环的初始状态循环体迭代因子 计数器的递增或递减 控制表达式3种循环语句while循环do while循环for循环 循环控制语句 while循环语法while 布尔表达式 循环体 循环控制语句 示例classTest publicstaticvoidmain Stringargs inti sum sum 0 i 0 while i 100 sum i i System out println Sum sum 循环体 控制表达式 循环控制语句 do while循环语法do 循环体 while 布尔表达式 先执行循环体后判断布尔表达式循环体至少执行一次 循环控制语句 示例importjava io IOException classTest publicstaticvoidmain Stringargs throwsIOException charc StringBufferbuffer newStringBuffer System out println 输入一句子以 表示结束 do c char System in read buffer append c while c System out println Output buffer toString C javaTest输入一句子以 表示结束fdsfs Output fdsfs C javaTest输入一句子以 表示结束fdsf中国 Output fdsf C 循环控制语句 for循环 最有效 最灵活的循环结构语法for 初始化部分 条件判断部分 迭代因子 循环体 初始化部分设置循环变量的初值条件判断部分任意布尔表达式迭代因子控制循环变量的增减 循环控制语句 for语句求0 7之间任意数的阶乘importjava io IOException classTest publicstaticvoidmain Stringargs throwsIOException inti n sum 1 System out println Pleaseinput 0 7 n System in read n 48 for i 1 i n i sum i System out println n sum D javaTestPleaseinput 0 7 55 1201 能否算0 92 能否算12 134 循环控制语句 for循环的几点注意初始化部分和迭代因子可以包含多个语句 以 分开for inti 0 j 10 i j i j 初始化部分 条件判断部分和迭代因子可以为空语句 但以 分开 表示无限循环for infiniteloop 循环控制语句 如果一个人出生于1970年 那么他这一辈子能有几个闰年 以70岁为寿命长度 intlength 70 intfirstYear 1970 intyear for inti 0 i length i year firstYear i if year 4 0 19721976198019841988199219962000200420082012201620202024202820322036 循环控制语句 循环的嵌套一个循环体内包含另一个完整的循环结构嵌套的层次多 多重嵌套while循环 do while循环 for循环相互嵌套 循环控制语句 求1 2 3 9 importjava io IOException classTest publicstaticvoidmain Stringargs throwsIOException intn sum total 0 System out println Pleaseinput 0 9 n System in read n 48 for intj 1 j n j sum 1 for inti 1 i j i sum i total sum System out println 各阶乘之和为 total 求阶乘 阶乘之和 C javaTestPleaseinput 0 9 4各阶乘之和为 33 输入0的结果 跳转 转向语句 将程序的执行跳转到其他部分的语句break 跳出 中止 循环continue 结束本次循环return 方法返回throw 抛出异常 Exception 跳转语句 break语句break语句用以中断当前执行的循环语句 for do while while 或switch语句两种形式不带标号的break语句表达形式 break 从本层循环中跳出带标号的break语句表达形式 从整个程序块中跳出 标号 程序块 break标号 若只有一层循环 带标号和不带标号作用相同若存在循环嵌套 两者作用不同 不带标号的break语句classTest publicstaticvoidmain Stringargs for intj 1 j 6 j if j 3 break System out print j j System out println stop 跳转语句 j 1j 2stop 带标号的break语句classTest publicstaticvoidmain Stringargs intj k Rep for j 8 j 1 j for k 1 k 跳转语句 81624327142128 若只有一层循环 带标号和不带标号作用相同若存在循环嵌套 两者作用不同 跳转语句 continue语句continue语句用以结束循环语句 for do while while 的本次循环两种形式不带标号的continue语句表达形式 continue 结束本次循环 即跳过continue语句后的语句 返回至本层循环体的条件测试部分带标号的continue语句表达形式 跳至标号所指语句块的条件测试部分继续执行注意与break语句的比较 标号 程序块 continue标号 若只有一层循环 带标号和不带标号作用相同若存在循环嵌套 两者作用不同 不带标号的continue语句classTest publicstaticvoidmain Stringargs for intk 6 k 0 k 2 if k 4 continue System out print k k t 跳转语句 k 6k 2k 0 带标号的continue语句classTest publicstaticvoidmain Stringargs iLoop for inti 1 i 10 System out print p elseSystem out print p System out println 跳转语句 2456121581620102050 若只有一层循环 带标号和不带标号作用相同若存在循环嵌套 两者作用不同 import 包含语句引入程序所需要的类importjava io importjava applet Applet package 打包语句指明所定义的类属于哪个包通常作为源程序的第一条语句packagetest 其他语句 第二章Java语法基础 词法规则数据类型常量与变量运算符和表达式语句数组和字符串 命令行参数 JAVA应用程序的主方法 程序的入口 publicstaticvoidmain Stringargs publicstaticvoidmain String a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论