您的当前位置:首页正文

java逻辑运算符

2022-06-16 来源:客趣旅游网
普科培训 2012-2-17 第三章 java程序设计概述 输入一个任意的数字,并获得其反向结果 importjava.util.Scanner; publicclassChangeNum{ } publicstaticvoidmain(String[]args){ System.out.print(\"请输入一个数字:\"); Scannersc=newScanner(System.in); inta=sc.nextInt(); inty; Stringk=\"\"; while(a!=0){ } System.out.println(\"\\b\"); System.out.println(k); } y=a%10; a=a/10; k=y+\"\"+k; System.out.print(y); 输出结果 赋值运算符号 Null即:字符串不存在 “”长度为零的字符串 \\ 1) 格式:变量 = 表达式 2) 功能:先计算右边表达式的值,在将其赋值给左边的变量存储。 3) 注意:  赋值运算符的左边只能是变量,不可是常量,也不可是表达式 如 5 = 3;a + b = 3;  右边表达式的数据类型与左边的变量要一致可以实现自动转换 初始化:变量第一次得到值 普科培训 2012-2-17 第三章 java程序设计概述 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; 递减运算符的使用,自己编写代码进行校验。 普科培训 2012-2-17 第三章 java程序设计概述 普科培训 2012-2-17 第三章 java程序设计概述 publicclassOpTest3{ publicstaticvoidmain(String[]args){ System.out.println(\"*****************************\"); inta=2; a=a++; System.out.println(\"a = a++ = \"+a); a=2; a=a+++a+++a++; //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(\"*****************************\"); booleanflag=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(\"!(3>3) \"+flag); System.out.println(\"*****************************\"); a=5; intb=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; 后右。Java中也有一些运算符的结合性是“自右至左”的。 普科培训 2012-2-17 第三章 java程序设计概述 flag=b>=a^a++>=b++; System.out.println(\"a =\"+a+\"b = \"+b+\" flag = \"+flag); System.out.println(\"*****************************\"); } } 运行的结果为: --运算符 前减如–a;规则,先减少,后使用 后减如 a--;规则:先使用,后减少。 无论是前减,还是后减,等价于 a = a – 1; a) 关系运算符:><>= <= != instanceof b) 关系运算符的结果一定是逻辑值,即:要么为true 要么为false c) 注意运算符两个或两个以上符合组成时,则他们之间不能有空格 如 a >= b; 写成a> =b; d) Instanceof它是属于的意思,用来判断某个对象属于某类吗? 逻辑运算符!(非)&(与) | (或) ^(异或)&&(短路与) ||(短路或) 逻辑运算符的值一定为逻辑值(true 或flase) 使用 2) 每种逻辑运算符的使用  !(非),格式: !a ; 规则: 当a为true时,则结果为false; 反之,则结果为true;  &(与),格式: a & b; 规则: 当&运算符左右两边均为true时,则结果为true; 反之,则结果为false。  |(或),格式: a | b; 规则: 当a和b有一个为true时,则结果为true; 普科培训 2012-2-17 第三章 java程序设计概述 publicclassOpTest4{ publicstaticvoidmain(String[]args){ inta=90; intb=323; intc=100; intmax=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(\"*****************************\"); charch='A'; 反之,则结果为false。  ^(异或),格式: a ^ b; 规则: 相同异或为假,不同异或为真。  &&(短路与),格式: a && b;  规则: 当&&运算符左右两边均为true时,则结果为true; 反之,则结果为false。 特点: 当&&运算符的左边为false时,则右边不运算。 ||(短路或),格式: a || b; 规则: 当a和b有一个为true时,则结果为true; 反之,则结果为false。 特点: 当 || 运算符的左边为true时,则右边不运算。 结论: &&和 || 的优点是: 节约了判断的时间,提高了判断的效率。 普科培训 2012-2-17 第三章 java程序设计概述 } 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中。 publicclassOpTest4{ inta=90; intb=323; intc=100; intmax=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(\"*****************************\"); publicstaticvoidmain(String[]args){ 普科培训 2012-2-17 第三章 java程序设计概述 } a=5; b=6; c=9; a*=b+c; System.out.println(\"a的值是:\"+a); System.out.println(\"*****************************\"); charch='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) 优点: 它会实现数据类型的自动转换。 普科培训 2012-2-17 第三章 java程序设计概述 publicstaticvoidmain(String[]args){ } } inta=-989; intb=323; intmax=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; intc=9; System.out.println(\"\\na = \"+a); a*=b+c;// 与 a = a * (b +c); 有何区别? System.out.println(\"a = \"+a); charch='A'; System.out.println(\"\\nch = \"+ch); ch+=1+2;// 与ch = ch + (1 + 2); 有何区别? System.out.println(\"ch = \"+ch); 位运算符: &(按位与) |(按位或) ^(按位异或) ~(按位取反) <<(左移) >>(右移) >>>(无符号的右移) 普科培训 2012-2-17 第三章 java程序设计概述 publicclassOpTest5{ publicstaticvoidmain(String[]args){ inta=5; intb=9; intc=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、十进制整数与二进制、八进制和十六进制数之间对应关系 十 0 1 2 3 4 5 6 7 二 000 001 010 011 100 101 110 111 八 0 1 2 3 4 5 6 7 十六 0 1 2 3 4 5 6 7 普科培训 2012-2-17 第三章 java程序设计概述 8 9 1000 1001 1010 1011 1100 1101 10 11 12 13 14 15 8 9 10(A) 11(B) 12(C) 13(D) 10 11 12 13 14 1110 16 14(E) 15 1111 17 15(F) 4、十进制整数转换成二进制数是如何进行的。 答案: 除以基数取余倒写。 什么是基数? 6 ==>>>( 110 )2 5、十进制整数转换成八、十六进制数是如何进行的。 同上。 6、二进制数据如何还原成十进制数据? 答案: 按权展开求和。 什么是权? (1101)2 ===>>>>( 13 )10 7、八、十六进制数还原成十进制数据? 答案: 同上。 8、八进制数据转换成二进制数是如何进行的? 答案: 八进制数据中的每一位数可用三位二进制数来表示即可。 (15)8 ===>>>( 001 101 )2 9、十六进制数据转换成二进制数是如何进行的? 答案: 十六进制数据中的每一位数可用四位二进制数来表示即可。 (3A6)16 ===>>>( 1110100110 )2 10、二进制转换成八进制数据如何进行? 答案: 从二进制数据的右边往左边每数三位作为一个八进制数即可。 1101011 ===>>>( 153 )8 11、二进制转换成十六进制数据如何进行? 答案: 从二进制数据的右边往左边每数四位作为一个十六进制数即可。 1101011 ===>>>>( 6B )16 12、原码、反码和补码? 原码: 普科培训 2012-2-17 第三章 java程序设计概述 例如: byte b1 = -5; 则其原码: 10000101 反码: 例如: byte b1 = -5; 则其反码: 11111010 补码: 例如: byte b1 = -5; 则其补码: 11111011 注意: 正整数只有原码,没有反码和补码;或者说: 正整数的原码和反码及补码是同一个。 注意: 在计算机中,负数一般情况下通常以补码方式参与运算。 b1 + 1 ===>>> 11111011 + 00000001 11111100 ===>>>原码 13、已知一个数的补码如何求其原码。 答案: 补码的补码就是原码。 例如: 已知某数的补码为: 11111100 ,则其原码是什么? 1) 补码: 11111100 看成原码 2) 求反码: 10000011 3) 求补码: 10000100 就是答案: -4 &(按位与) 格式: a& b; 规则: 对应位上均为1时,则为1;反之,则为0. |(按位或) 格式: a | b; 规则: 对应位上只有1时,则为1;反之,则为0. ^(按位异或) 格式: a ^ b; 规则: 对应位上相同异或为0,不同异或为1。 ~(按位取反) 格式: ~a 规则: 1变0,0变1,且符号位也参与运算。 普科培训 2012-2-17 第三章 java程序设计概述 publicclassOpTest5{ } publicstaticvoidmain(String[]args){ } inta=5; intb=9; intc=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===>>long char==>>int==>>long 注意: int ==>> float long==>>> float long==>>> double 它们会自动转换,但可以产生失真,然而一般情况下不影响实际应用。 2) 强制转换: 将大类型的数据赋给小类型的变量。 格式: 小类型的变量 = (小类型名)(大类型的数据); 例如: byte b1 = (byte)300; 2、当表达式中有不同类型的数据参与运算时,则表达式的值的类型如何确定? 1) 当表达式中有double型时,则表达式的值的类型为double型。 2) 当表达式中没有double而有float型数据时, 则表达式的值的类型为float型。 普科培训 2012-2-17 第三章 java程序设计概述 3) 当表达式中既没有double,也没有float;而有long型数据时, 则表达式的值的类型为long型。 4) 当表达式中既没有double和float,也没有long型数据时,则 表达式的值的类型为int型。 publicclassDataTypeConTest{ } publicstaticvoidmain(String[]args){ } byteb1=127; shorts1=b1;//自动转换 inti1=s1; longl1=i1; floatf1=l1; doubled1=f1; i1=2147483647; f1=i1; System.out.println(\"i1 = \"+i1); System.out.println(\"f1 = \"+f1); i1=300; b1=(byte)i1;//强制转换 System.out.println(\"i1 = \"+i1); System.out.println(\"b1 = \"+b1); f1=32.987f; i1=(int)f1; System.out.println(\"f1 = \"+f1+\" i1 = \"+i1); charch=65; ch++; ch+=2; //ch = ch + 1; ch=(char)(b1+s1); 普科培训 2012-2-17 第三章 java程序设计概述 普科培训 2012-2-17 第三章 java程序设计概述 普科培训 2012-2-17 第三章 java程序设计概述 普科培训 2012-2-17 第三章 java程序设计概述 注意: 1、 在定义是如何赋予的值和类型不匹配那么将会出现错误。 2、 变量必须初始化才能使用 3、 赋予值时如果超过定义类型的范围将出错 普科培训 2012-2-17 第三章 java程序设计概述 4、 字符型不能利用变量进行加减,得到的类型是int A = 5 是表达式 普科培训 2012-2-17 第三章 java程序设计概述

因篇幅问题不能全部显示,请点此查看更多更全内容