03--java中的运算符
来源:互联网 发布:到期域名查询 编辑:程序博客网 时间:2024/06/06 01:13
Java语言中定义了若干运算符号,来完成某种特殊的运算,
按照参与运算的数据的数量分为三种类型
一元/单目运算符
二元/双目运算符
三元/多(三)目运算符
按照运算符的功能分为六种
算术运算符 关系运算符 逻辑运算符
位运算符 移位运算符 条件运算符
算术运算符:+ - * / %
当整数运算超出了此类型临界值,如果超过了最值,该数值将反响跳转到表示范围的另一端。例如下面的例子。
System.out.println((byte)(100 + 45)); //打印结果是-111,因为运算结果145超过byte的数据的范围(-128~127),反向到负数端
整数的除法是整除,按正常运算小数部分全部舍弃。在做除法运算的时候容易出现下溢出(小数位丢掉了)。例如:
System.out.println(12/5); // 结果是2,下溢出,小数部分被舍弃
不同类型的数在做运算时,会发生类型转换,byte,short,char,三种类型的数做运算实际上都是按照int在做运算,运算的结果默认是int型。也就是说int类型及以下的类型的数都按照int计算。例如:
byte b = 3;short c = 5;b = c + 3; // 不能通过编译,计算的结果是int类型,在赋给byte类型的b会丢失精度b = (byte)(c+3);//能通过编译,将byte类型的结果强制转换为int类型。
+号除了进行加法运算外,还可以进行字符串拼接,任何数据域字符串进行+运算,解雇全部转换为字符串进行连接。例如:
System.out.println("5" + "5");//结果是55,此时的+号作为字符串拼接的符号
%表示模运算,结果是取余操作,负数对一个数取模结果还是负数,结果的正负与模数无关,与被模数的正负相同。例如:
System.out.println(-5%3);//-2System.out.println(-5%-3);//-2System.out.println(5%-3);//2System.out.println(5%3);//2
自增(自减)运算符:++ --,就是可以将当前变量自我增加(减少)1的运算符。
i++,后++,先将i的值作为整个表达式的值,然后i增加1.
++i,先++,先将i的增加1,然后将i的值作为整个表达式的值。--是一样的原理。例如:
int x = 2,y = 2;System.out.println(x++);//打印2System.out.println(++y);//打印3System.out.println(x);//打印3System.out.println(y);//打印3
关系运算符:> < == >= <= !=,用于比较两个值之间的关系,运算结果为布尔类型的值,true或者false。例如:
System.out.println(3>5);//falseSystem.out.println(3<5);//trueSystem.out.println(3==5);//false;System.out.println(3>=5);//falseSystem.out.println(3<=5);//trueSystem.out.println(3!=5);//true
逻辑运算符:&(与) |(或) ^(异或) !(非) &&(短路与) ||(短路或)。逻辑运算结果为布尔值true或者false。逻辑运算真值表:
&(&&)
true
false
true
true
false
fasle
false
false
| ( || )
true
false
true
true
true
fasle
true
false
^
true
false
true
false
true
fasle
true
false
!
true
false
false
true
&&和||被称作短路运算,即在做运算的两个表达式中,第一个表达式的结果能决定整个表达式的结果时,第二个表达式则不会再做判断,可以理解为被短路了。一般来说用的比较多。例如:
int x=3,y=4;if(x<y||y++>3){ //||因为x<y为true,y++>3并为做判断。System.out.println(y);//打印4,说明y并没有做++的运算。}
位运算符:~ & | ^.位运算是针对数字的二进制表示格式进行运算的一种特殊运算。操作数均为整数。
~按位取反对操作数的每一个二进制位进行“取反”操作。格式:~操作数
42 00101010
~
-43 11010101
&按位与将操作数的对应位逐位进行位逻辑运算运算。用途:将操作数的指定二进制位置0.格式: 操作数&操作数
42 & 15
00101010
& 00001111
00001010
|按位或将操作数的对应位逐位进行位逻辑或算运算。用途:将操作数的指定二进制位置1.格式: 操作数&操作数
42 & 15
00101010
| 00001111
00101111
^按位异或将操作数的对应位逐位进行位异或运算,用途:将操作数的指定二进制位取反。格式:操作时^操作数
42 ^ 15
00101010
^ 00001111
00100101
移位运算符:>>右移 <<左移 >>>无符号右移。对操作数的二进制表示形式进行左右位的移动。
右移>>,格式:操作数1>>操作数2,将操作数1的二进制位向右移操作数2(正整数)位,原数为正数高位补0,原数为负数高位补1.
int a = 42; int b = a >> 2; System.out.println(“b=” + b);
42 00101010
>>2
10 00001010
左移<<,格式:操作数1<<操作数2,将操作数1的二进制位向右移操作数2(正整数)位,低位位补0。
int a = 42;int b = a << 2;System.out.println(“b=” + b);
42 00101010
<<2
168 10101000
无符号右移>>>,格式:操作数1>>>操作数2,将操作数1的二进制位向右移操作数2(正整数)位,高位位补0。
int a = 42;int b = a >>>2;System.out.println(“b=” + b);
条件运算符。? : .条件运算符是目前唯一的三目运算符.格式:条件表达式?表达式1:表达式2 3>2?4:5 true/false?值1:值2;
当条件为真时,该运算符的结果是表达式1
当条件为假时,该运算符的结果是表达式2
int x=3,y=5; System.out.println(x>y?x:y);//x>y为false,打印y的值。
总结:二进制那些有些蒙,理解有关运算用二进制来分析几次转换规律老是记不住。下来多分析分析。
- 03--java中的运算符
- java中的“%”运算符
- JAVA中的运算符
- java中的运算符
- java中的运算符
- java中的运算符
- Java中的运算符
- Java中的运算符
- JAVA中的运算符
- java中的运算符
- java中的运算符
- java中的++运算符
- Java中的<<运算符
- java中的运算符
- java中的运算符
- Java中的运算符
- java中的运算符
- Java中的运算符
- mac os 利用ssh 搭建git server服务器详细教程,以及git基本用法(下)
- [安卓破解]MirrorOp Sender 1.1.2.0 ,无时间限制
- OD调试器DIY
- 系统调用:系统调用的实现
- 计算机一级刊物和核心期刊介绍
- 03--java中的运算符
- Enqueue (队列等待)
- 手机支付宝面临的风险和应对(IV)---现有的PC防范手段安全吗?
- 马尔科夫随机场和马尔科夫链
- WinForm Control 命名规范
- 手机支付宝面临的风险和应对(V)---手机支付宝安全设计方法论(未完待续)
- Install the powerful vim plugin in ubuntu system
- 关于 android-support-v4.jar
- 《软件学报》《计算机学报》《计算机研究与发展》为计算机类三大权威刊物