java逻辑运算符.docx_第1页
java逻辑运算符.docx_第2页
java逻辑运算符.docx_第3页
java逻辑运算符.docx_第4页
java逻辑运算符.docx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

普科培训 2012-2-17第三章 java程序设计概述输入一个任意的数字,并获得其反向结果import java.util.Scanner;public class ChangeNum public static void main(String args)System.out.print(请输入一个数字:);Scanner sc = new Scanner(System.in);int a = sc.nextInt();int y;String k = ;while(a !=0)y = a % 10;a = a /10;System.out.print(y);k = y + +k;System.out.println(b);System.out.println(k);输出结果赋值运算符号Null即:字符串不存在“”长度为零的字符串1) 格式 : 变量 = 表达式2) 功能: 先计算右边表达式的值,在将其赋值给左边的变量存储。3) 注意: 赋值运算符的左边只能是变量,不可是常量,也不可是表达式如 5 = 3; a + b = 3; 右边表达式的数据类型与左边的变量要一致可以实现自动转换初始化:变量第一次得到值1、java语言中的赋值运算符: = 1) 格式: 变量 = 表达式;2) 功能: 先计算右边表达式的值,再将其值赋给左边的变量存储。3) 注意事项: a) 赋值运算符的左边只能是变量,不可是常量,也不可是表达式。如: 5 = 3; a + b = 3;b) 右边表达式的数据类型与左边的变量要一致或可以实现自动转换。2、递增、递减运算符: + -+递增运算符有两种形式1) 前加,如: +a;规则: 先增加,后使用。2) 后加,如: a+; 规则: 先使用,后增加。注意: 不论是前加,还是后加,它们最终等价于 a = a + 1;趣味思考: int a = 2; 则 a = a+; 之后a是多少?int a = 2; 则 a = a+ + a+ + a+; 之后a是多少?-递减运算符有两种形式1) 前减,如: -a; 规则: 先减少,后使用。2) 后减,如: a-; 规则: 先使用,后减少。注意: 不论是前减,还是后减,它们最终等价于 a = a - 1;递减运算符的使用,自己编写代码进行校验。public class OpTest3public static void main(String args)System.out.println(*);int a = 2 ;a = a+;System.out.println(a = a+ = +a);a = 2;a = a+ + a+ + a+;/Java规定了各种运算符的结合性,如算术运算符的结合方向为“自左至右”,即先左后右。Java中也有一些运算符的结合性是“自右至左”的。 System.out.println(a+ + a+ + a+ = +a);a = 2;System.out.println(a+ = +a+);a = 2;System.out.println(+a = + +a);System.out.println(*);boolean flag = true;flag = 5 = 3;System.out.println( 5=3 +flag);flag = 5=3; /读作5大于或者等于3?System.out.println( 5=3 +flag);flag = !(3=3);System.out.println(!(33) +flag);System.out.println(*);a = 5;int b = 6;flag = a = b & a+ = +b; System.out.println(a =+a+b = +b+ flag = +flag);a = 5;b = 6;flag = a = b & a+ = b+; System.out.println(a =+a+b = +b+ flag = +flag);a = 5;b = 6;flag = a = b | a+ = b+; System.out.println(a =+a+b = +b+ flag = +flag);a = 5;b = 6;flag = a = b | a+ = b+; System.out.println(a =+a+b = +b+ flag = +flag);a = 5;b = 6;flag = b = a a+ = b+; System.out.println(a =+a+b = +b+ flag = +flag);System.out.println(*);运行的结果为:-运算符前减 如 a; 规则,先减少,后使用后减 如 a-; 规则:先使用,后减少。无论是前减,还是后减,等价于 a = a 1;a) 关系运算符 : = = b; 写成a =b;d) Instanceof 它是属于的意思,用来判断某个对象属于某类吗?逻辑运算符!(非) &(与) | (或) (异或) &(短路与) |(短路或)逻辑运算符的值一定为逻辑值(true 或 flase)使用2) 每种逻辑运算符的使用u !(非),格式: !a ; 规则: 当a为true时,则结果为false; 反之,则结果为true;u &(与),格式: a & b; 规则: 当&运算符左右两边均为true时,则结果为true; 反之,则结果为false。 u |(或),格式: a | b; 规则: 当a和b有一个为true时,则结果为true; 反之,则结果为false。 u (异或),格式: a b;规则: 相同异或为假,不同异或为真。u &(短路与),格式: a & b; 规则: 当&运算符左右两边均为true时,则结果为true; 反之,则结果为false。 特点: 当&运算符的左边为false时,则右边不运算。u |(短路或),格式: a | b; 规则: 当a和b有一个为true时,则结果为true; 反之,则结果为false。 特点: 当 | 运算符的左边为true时,则右边不运算。 结论: & 和 | 的优点是: 节约了判断的时间,提高了判断的效率。public class OpTest4public static void main(String args)int a = 90;int b = 323;int c = 100;int max = 0;max = (a b ? a:b) c ? (a b ? a:b):c;System.out.println(a和b中最大的数是:+max);System.out.println(a的值是:+a);a = a 0 ? a : -a;System.out.println(通过处理后的a值:+a);System.out.println(*); a = 5; b = 6; c = 9;a *= b+c;System.out.println(a的值是:+a);System.out.println(*);char ch = A;System.out.println(nch = +ch);ch += 1+2;/与 ch = ch + (1+2);区别 后者报错不可强制转换, /利用 += 和 + - 可以强制转换类型,自动转换类型System.out.println(ch = + ch);System.out.println(*);条件运算符: ? : 1) 格式: 变量 = (条件) ? 表达式1 : 表达式2;2) 规则: 先判断条件,若条件为true,则取表达式1的值作为整个条件运算符组成的表达式的值并赋给左边变量。反之,则取表达式2的值赋给左边的变量。3) 例如: max = a b ? a : b;当a大于b时,则将a的值赋给max;当a小于b或等于b时,则取b的值赋给max。思考: 已知三个整数a , b , c 和一个 max 变量;用条件运算符写一个语句求出三个整数中的最大数并存储于max中。public class OpTest4public static void main(String args)int a = 90;int b = 323;int c = 100;int max = 0;max = (a b ? a:b) c ? (a b ? a:b):c;System.out.println(a和b中最大的数是:+max);System.out.println(a的值是:+a);a = a 0 ? a : -a;System.out.println(通过处理后的a值:+a);System.out.println(*); a = 5; b = 6; c = 9;a *= b+c;System.out.println(a的值是:+a);System.out.println(*);char ch = A;System.out.println(nch = +ch);ch += 1+2;/与 ch = ch + (1+2);区别 后者报错不可强制转换, /利用 += 和 + - 可以强制转换类型,自动转换类型System.out.println(ch = + ch);System.out.println(*);扩展的赋值运算符: 其它运算符与赋值运算符组成的新运算符。例如: += -= *= /= %= 1) 格式: 变量 += 表达式;2) 规则: 先做变形为: 变量 = 变量 + (表达式);然后,做小括号中的表达式的计算,再做变量与表达式的运算;最后,将结果赋给左边的变量。3) 例如: a *= b + c;它最终等价于: a = a * (b + c); 4) 优点: 它会实现数据类型的自动转换。public static void main(String args)int a = -989;int b = 323;int max = a b ? a : b;System.out.println(a + 和 + b + 中最大的是: + max );System.out.println(n原来a = + a );a = a 0 ? a : -a;System.out.println(通过条件运算符处理后a = + a );a = 5;b = 6;int c = 9;System.out.println(na = + a );a *= b + c; / 与 a = a * (b +c); 有何区别?System.out.println(a = + a );char ch = A;System.out.println(nch = + ch );ch += 1+2; /与 ch = ch + (1 + 2); 有何区别?System.out.println(ch = + ch );位运算符: &(按位与) |(按位或) (按位异或)(按位取反) (右移) (无符号的右移)public class OpTest5 public static void main(String args)int a = 5;int b = 9;int c = a & b;System.out.println(a + & + b + 结果是: + c );c = a | b;System.out.println(a + | + b + 结果是: + c );c = a b;System.out.println(a + + b + 结果是: + c );c = a;System.out.println( + a + 结果是: + c );进制之间的转换和反码补码1、在计算机内数据通常以二进制数据参与运算和处理。2、在计算机内数据的二进制编码数的最高位通常为符号位,用1表示负号,0表示正号。3、十进制整数与二进制、八进制和十六进制数之间对应关系十二八十六00000010011120102230113341004451015561106671117781000108910011191010101210(A)1110111311(B)1211001412(C)1311011513(D)1411101614(E)1511111715(F)4、十进制整数转换成二进制数是如何进行的。答案: 除以基数取余倒写。什么是基数?6 =( 110 )25、十进制整数转换成八、十六进制数是如何进行的。同上。6、二进制数据如何还原成十进制数据?答案: 按权展开求和。什么是权?(1101)2 =( 13 )107、八、十六进制数还原成十进制数据?答案: 同上。8、八进制数据转换成二进制数是如何进行的?答案: 八进制数据中的每一位数可用三位二进制数来表示即可。(15)8 =( 001 101 )29、十六进制数据转换成二进制数是如何进行的? 答案: 十六进制数据中的每一位数可用四位二进制数来表示即可。 (3A6)16 =( 1110100110 )2 10、二进制转换成八进制数据如何进行?答案: 从二进制数据的右边往左边每数三位作为一个八进制数即可。1101011 =( 153 )811、二进制转换成十六进制数据如何进行?答案: 从二进制数据的右边往左边每数四位作为一个十六进制数即可。1101011 =( 6B )1612、原码、反码和补码?原码:例如: byte b1 = -5; 则其原码: 10000101 反码: 例如: byte b1 = -5; 则其反码: 11111010补码: 例如: byte b1 = -5; 则其补码: 11111011注意: 正整数只有原码,没有反码和补码;或者说:正整数的原码和反码及补码是同一个。注意: 在计算机中,负数一般情况下通常以补码方式参与运算。b1 + 1 = 11111011 + 00000001 11111100 =原码 13、已知一个数的补码如何求其原码。答案: 补码的补码就是原码。例如: 已知某数的补码为: 11111100 ,则其原码是什么?1) 补码: 11111100 看成原码2) 求反码: 100000113) 求补码: 10000100 就是答案: -4&(按位与)格式: a & b;规则: 对应位上均为1时,则为1;反之,则为0.|(按位或)格式: a | b;规则: 对应位上只有1时,则为1;反之,则为0.(按位异或)格式: a b;规则: 对应位上相同异或为,不同异或为。(按位取反)格式: a规则: 变,变,且符号位也参与运算。public class OpTest5 public static void main(String args)int a = 5;int b = 9;int c = a & b;System.out.println(a + & + b + 结果是: + c );c = a | b;System.out.println(a + | + b + 结果是: + c );c = a b;System.out.println(a + + b + 结果是: + c );c = a;System.out.println( + a + 结果是: + c );自动转换的规则1、当赋值运算符的左右两边其数据类型不一致时,会怎样?会发生类型的转换。1) 自动转换: 将小类型的数据赋给大类型的变量。byte=short=int=longchar=int=long注意: int = float long= float long= double 它们会自动转换,但可以产生失真,然而一般情况下不影响实际应用。2) 强制转换: 将大类型的数据赋给小类型的变量。格式: 小类型的变量 = (小类型名)(大类型的数据);例如: byte b1 = (byte)300;2、当表达式中有不同类型的数据参与运算时,则表达式的值的类型如何确定?1) 当表达式中有double型

温馨提示

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

评论

0/150

提交评论