JAVA随笔(2)

^:异或
两边相同结果是false
两边不同结果是true
&和&&的特点:
&:无论左边是true是false,右边都运算
&&:当左边为false时,右边不运算。


|:两边都参与运算。
||:当左边为true,右边不运算。
3<<2 = 12 -> 3*2^2
6>>2 = 1 -> 6/2^2
6>>1 = 3 -> 6/2^1
>>:最高位补什么由原有数据的最高位值而定
>>>:无论最高位是什么,右移后最高位都用0补


一个数异或同一个数两次,结果还是那个数。


练习:
1、最有效的效率算出2乘以8等于几?
2<<3
2、n=3,m=8,不用第三方变量,交换值
n = n ^ m
m = n ^ m
n = n ^ m


0000-0000 0000-0000 0000-0000 0011-1100 = 60;


60&15 = 12
0000-0000 0000-0000 0000-0000 0011-1100 
0000-0000 0000-0000 0000-0000 0000-1111
----------------------------------------
0000-0000 0000-0000 0000-0000 0000-1100 = 12


temp = 60>>4
temp & 15 = 3


0000-0000 0000-0000 0000-0000 0000-0011
0000-0000 0000-0000 0000-0000 0000-1111
----------------------------------------
0000-0000 0000-0000 0000-0000 0000-0011 = 3




(char)(12-10+'A') = C
三元运算符
选择结构
格式:
switch(表达式)(byte short int char)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
......
default:
执行语句;
break;
}


int x = 3
switch(x)
{
default:
System.out.println("d");
case 4:
System.out.println("a");
case 5:
System.out.println("b");
break;
case 2:
System.out.println("c");
break;


}
结果为d
      a
      b




如果判断的具体数值不多,而是符合byte short int char 这四种类型
建议使用swtich语句
其他情况:对区间判断,对结果为boolean类型判断,使用if

你可能感兴趣的:(JAVA)