位運(yùn)算符
~(按位取反):就是針對這個二進(jìn)制數(shù)據(jù)功咒,所有的0變1,1變0.
比如:
public class OperatorDemo1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println(a & b);//0
System.out.println(a | b);//7
System.out.println(a ^ b);//7
System.out.println(~b);//-5
}
}
b:00000000 00000000 00000000 00000100
~按位取反东囚,得
(補(bǔ)碼) 11111111 11111111 11111111 11111011
(反碼) 11111111 11111111 11111111 11111010
(原碼) 10000000 00000000 00000000 00000101
即為-5
"<<" 左移:左邊高位舍棄,右邊空出來的用0補(bǔ)齊乎完。
">>" 右移:如果最高位是0,左邊被移空的位就填入0秘狞;如果最高位是1,左邊被移空的位就填入1蹈集。
">>>" 無符號右移
向左移動或向右移動烁试,其實(shí)就是把數(shù)據(jù)增大或縮小2的制定次冪。
public class OperatorDemo2{
public static void main(String[] args) {
//<<左移
System.out.println(16<<2);
//16*2^2 = 64
//>>右移
System.out.println(16>>2);
//>>>無符號右移
System.out.println(16>>>2);
}
}
練習(xí)1:請用最高效率寫出2乘以8這個式子拢肆。
public class OperatorDemo3 {
public static void main(String[] args) {
System.out.println(2<<3);
}
}
/*output:
16
*/
練習(xí)2:請把兩個數(shù)據(jù)交換减响,int a = 10,int b =20郭怪。
public class OperatorDemo4 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;
System.out.println(" a = " + a);
System.out.println(" b = " + b);
}
}
/*output:
a = 20
b = 10
*/
練習(xí)2第二種方法:
使用^(位運(yùn)算符)
特點(diǎn):一個數(shù)據(jù)對同一個數(shù)據(jù)^(位運(yùn)算兩次)支示,數(shù)據(jù)不變。
public class OperatorDemo5 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;//a ^ b ^ b = a
a = a ^ b;//a ^ a ^ b = b
System.out.println(a + "***" + b);
}
}
/*output:
a = 20
b = 10
*/
條件運(yùn)算符(三元運(yùn)算符)
表達(dá)式:
(條件表達(dá)式)鄙才?表達(dá)式1:表達(dá)式2颂鸿;
//注意:條件表達(dá)式說明這里將來只能是結(jié)果為true或false的表達(dá)式。
如果表達(dá)式為true攒庵,則表達(dá)式1為結(jié)果嘴纺;
如果表達(dá)式為false,則表達(dá)式2為結(jié)果浓冒。
public class OperatorDemo6 {
public static void main(String[] args) {
int x = 100;
int y = (x > 50) ? 100 : 200;
System.out.println(y);//output:100
//復(fù)雜點(diǎn)
int z = (x > 200) ? (y <40 ? 100 : 200) : (y > 100 ? 300 : 400);
System.out.println(z);//output:400
}
}
流程控制語句
- 順序結(jié)構(gòu)
- 選擇結(jié)構(gòu)
- 循環(huán)結(jié)構(gòu)
選擇結(jié)構(gòu):if語句
格式一:
if (條件表達(dá)式) {
語句體
}
//如果條件表達(dá)式返回值為true栽渴,則執(zhí)行語句體;false則什么都不做稳懒。
可不可以不寫{}呢闲擦?我們試一下:
public class IfDemo {
public static void main(String[] args) {
int x = 20;
if (x > 100)
System.out.println("Hello");
System.out.println("World");
}
}
/*
output:World
*/
運(yùn)行結(jié)果證明if語句后不寫{}可以運(yùn)行,但它只能控制后面的第一條語句,如想控制多條墅冷,必須加{}贮缕。