break:跳出循环,终止循环
for(int j=0;j<3;j++){
System.out.println("j = "+j++);
break;
//结果 j = 0
}
continue:中止本次循环,重新执行新的循环
int i=0;
while(i<3){
i+=1;
if(i<2){
System.out.println("if i ="+i);
continue;
}
System.out.println("if执行我就不会执行,while为真且if不执行的时候我才执行i="+i);
/*
结果如下:
if i =1
if执行我就不会执行,while为真且if不执行的时候我才执行i=2
if执行我就不会执行,while为真且if不执行的时候我才执行i=3
*/
}
return 函数返回,如果在循环里也相当于退出循环,但是就算循环后面还有语句也不会执行(不是在一个{ }里)
3/4 结果为0而不是0.75 3*1.0/4 结果为0.75
单独使用自增或自减不影响其值!
比较运算符的结果一定是boolean类型,要么为true或者为false。
++x(--x)表示在使用x之前,先使x的值增(减)1。
操作元必须是一个整型或浮点型变量。
x++(x--)表示在使用x之后,使x的值增(减)1。
逻辑运算符包括
&&、&、||、|、!,^
其中&&、&、|、||为二目运算符,实现逻辑与、逻辑或;
!为单目运算符,实现逻辑非。
逻辑运算符的操作元必须是boolean型数据,逻辑运算符可以用来连接关系表达式。
逻辑异或^ 相同为false,不同为true;
偶数次异或自己为0,奇数次异或自己还为自己;偶数次异或X,结果依然为X。
在某种特定场合下可用于数据的简单加密。
&&与&‘区别以及||与|区别(两者的结果是一样的):
(建议使用&&或 || 提高性能)
二者的执行部分可能不同:
&无论左边结果真假,右边的部分均执行。同理,| 无论左边结果真假,右边部分均执行。
&&当左边的结果为假时,右边的不再进行处理(A);同理,当||左边的结果为真时,右边部分将不再执行(B)。
&&当左边的结果为真时,右边的部分才进行处理(C)。||当左边结果为假时,右边部分才执行。(D)
位运算符:(操作的单位为位,即二进制码)
位运算:& 1:将十进制转为二进制
2:求补码(因为计算机对数的运算与表示均已补码的方式进行处理)
3:进行位与(&(与逻辑与的含义相同)Q)、位或( |(与逻辑或的含义相同)R)、位异或(^ 相同为假,不相同为真W)、位取反(~(取反)E)运算
4:由补码求反码(补码—1(针对负数)正数的原 反 补码相同 )(符号位永远保留)
5:由反码求原码(保留符号位)
6:转为十进制即为输出结果(注意符号位的正负)
***
在java虚拟机中整数有byte、short、int、long四种 分别表示 8位、16位、32位、64位有符号整数。整数使用补码表示。
1.确定byte是1个字节,也就是8位。
2.最大值 0111 1111 127
3.最小值 1000 0000。 —0(—128)
4.0111 1111 就是127。(补码)
5.1000 0000 (补码)减去1是 1111 1111 按照位取反 1000 0000 得到 -128
3<<2(3左移两位)(因为3为正数,所以原反补码均相同):
3的原码:: 00000000 00000000 00000000 00000011
3的补码:: 00000000 00000000 00000000 00000011(1*2^1+1*2^0=3)
左移2位 : (00)000000 00000000 00000000 0000001100(补2个零)(1*2^1*2^2+1*2^2=12)(3*2^2=12 原数*2^左移位数)
-3<<2
-3的原码: 10000000 00000000 00000000 00000011
-3的补码: 11111111 11111111 11111111 11111101
-3左移两位 (11)111111 11111111 11111111 1111110100
左移后的反码: 111111 11111111 11111111 1111110011
左移后的原码: 100000 00000000 00000000 0000001100 (—12)
特殊情况:
原码: 01111111 11111111 11111111 11111111(=2^31-1)
补码 : 01111111 11111111 11111111 11111111(左移两位)
左移2位: ( 01)11111111 11111111 11111111 11111100(补码)
反码: 11111111 11111111 11111111 11111011
原码: 1000000 0000000 0000000 00000100 (-4)
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
例如11 >> 2,则是将数字11右移2位
0000 0000 00000000 00000000 00001011
(00)000000 00000000 00000000 00000010(11/2^2=2)
负数向右移两位-4>>2 结果位 —1
右移一位相当于除2,右移n位相当于除以2的n次方。
无符号右移(>>>)
对于正数来说和带符号右移相同,对于负数来说不同。
—3>>> 2
-3的原码: 10000000 00000000 00000000 00000011
-3的补码: 11111111 11111111 11111111 11111101
-3右移两位 00111111 11 111111 11111111 11111111(01)
右移后的反码: 00111111 11 111111 11111111 11111110
原码 01000000 00000000 00000000 0000001(1*2^30+1)