2.5.5 位运算符
位运算符
| ||
运算符
|
运算
|
范例
|
<<
|
左移
|
3 << 2 = 12 --> 3*2*2=12
|
>>
|
右移
|
3 >> 1 = 1 --> 3/2=1
|
>>>
|
无符号右移
|
3 >>> 1 = 1 --> 3/2=1
|
&
|
与运算
|
6 & 3 = 2
|
|
|
或运算
|
6 | 3 = 7
|
^
|
异或运算
|
6 ^ 3 = 5
|
~
|
反码
|
~6 = -7
|
位运算符的细节
| |
<<
|
空位补0,被移除的高位丢弃,空缺位补0。
|
>>
|
被移位的二进制最高位是0,右移后,空缺位补0;
最高位是1,空缺位补1。
|
>>>
|
被移位二进制最高位无论是0或者是1,空缺位都用0补。
|
&
|
二进制位进行&运算,只有1&1时结果是1,否则是0;
|
|
|
二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
|
^
|
相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
|
位运算优点:运算速度极快
位运算缺点:只能用于*2或/2运算
&可用于获取二进制中的有效位1
a = a ^ b;//a = 3 ^ 7;
b = a ^ b;//b = 3 ^ 7 ^ 7;b = 3;
a = a ^ b;//a = 3 ^ 7 ^ 3;a = 7;
对两个整数变量的值进行互换
三、tip!异或
a = a ^ b;//a = 3 ^ 7;
b = a ^ b;//b = 3 ^ 7 ^ 7;b = 3;
a = a ^ b;//a = 3 ^ 7 ^ 3;a = 7;
2.5.6 三元运算符
格式
•(条件表达式)?表达式1:表达式2;
•如果条件为true,运算后的结果是表达式1;
•如果条件为false,运算后的结果是表达式2;
2.6.1 判断结构
if语句
三种格式:
1.if(条件表达式)
{
执行语句;
}
2.if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
3.if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。(三元运算符可以理解为if else的简写形式
)
c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;
2.6.2 选择结构
switch语句
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int , char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
一、通过第三方变量
int temp = a;
a = b;
b = temp;
二、通过和的形式。有个弊端,当两个数较大时,可能会超出int范围
a = a + b;//a = 3 + 7;
b = a - b;//b = 3 + 7 -7;b = 3;
a = a - b;//a = 3 + 7 -3;a = 7;
2.5.6 三元运算符
格式
•(条件表达式)?表达式1:表达式2;
•如果条件为true,运算后的结果是表达式1;
•如果条件为false,运算后的结果是表达式2;
2.6.1 判断结构
if语句
三种格式:
1.if(条件表达式) { 执行语句; } | 2.if(条件表达式) { 执行语句; } else { 执行语句; } | 3.if(条件表达式) { 执行语句; } else if (条件表达式) { 执行语句; } …… else { 执行语句; }
|
if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。(三元运算符可以理解为if else的简写形式
)
c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;
2.6.2 选择结构
switch语句
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int , char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
outer:for (int x = 0; x<3; x++)
{
inner:for (int y = 0; y<4; y++)
{
System.out.println("x="+x);
break outer;
}
}
tip:\t 制表符(使输出对齐)
利用\"打印带引号的内容。例子:"\"book\"";