Java基礎三
一、位運算符
之前學習的運算符,都是基於變量的,或者常量的。
實例1:
class test1{
public static void main(String [] args){
//& | ^ ~
//上面四種運算符都是基於位的。
//& : 每一位都比較,有0則0,無0則1.
// | : 每一位都比較,有1則1,無1則0.
//^ : ,相同則0,不同則1.
//~ : 每一位都取反。
System.out.println(6&3);
System.out.println(6|3);
System.out.println(6^3);
System.out.println(~6);
}
}
/*
============================
110
& 011
------------------
010
============================
110
| 011
------------------
111
============================
110
^ 011
------------------
101
============================
~6:
int 四個字節
00000000 00000000 00000000 00000110 6 的補碼 計算機是以補碼的形式進行計算
11111111 11111111 11111111 111111001 ~6 的補碼
求源碼 1000000 00000000 00000000 00000111 -7
*/
實例2:
class Operator_Demo2{
public static void main(String [] args){
//兩個數交換,不適用第三個變量
int x=10;
int y=5;
/*
int temp=0;
temp=x;//temp=10
x=y;//x=5
y=temp;//y=10
System.out.println(x+":"+y);
*/
/*
//如果把兩個數的和求出來,放入其中之一,然後,利用和與一個數就能求另一個數。
x=x+y;//x=15
y=x-y;//y=15-5=10=原來的x
x=x-y;//x=15-10=5=原來的y
System.out.println(x+":"+y);
*/
//^:異或運算有個特點,一個數據對另一個數據異或兩次,該數據不變
//System.out.println(5^10^10);
//System.out.println(5^10^5);
//0^0=0 0^0=0
//1^0=1 1^0=1
//0^1=1 1^1=0
//1^1=0 0^1=1
//難點:利用^,交換x與y。
x=x^y; //x=10^5;
y=x^y; //y=10^5^5=10;
x=x^y; //x=10^5^10=5;
System.out.println(x+":"+y);
}
}
實例3:
class test2{
pubic static void main(String [] args){
/*
<<:左移,左邊最高位丟棄,右邊補進0
eg:0000 0001 -> 0000 0010
>>:右移,最高位是0,左邊補齊0;最高位是1,左邊補齊1.
>>>:無符號右移:無論最高位是0還是1,左邊都補齊0.
*/
System.out.println(12<<1); //12*2的1次冪 24
System.out.println(12<<2); //12*2的2次冪 48
/*
00000000 00000000 00000000 00001100 12的補碼
(0)0000000 00000000 00000000 000011000 8+16=24
(00)000000 00000000 00000000 0000110000 16+32=48
*/
System.out.println(12>>1); // 12/2的1次冪 6
System.out.println(12>>2); // 12/2的2次冪 3
System.out.println(12>>3); // 1
System.out.println(-2>>1); // -1
/*
00000000 00000000 00000000 00001100 12的補碼
000000000 00000000 00000000 0000110(0) 4+2=6
0000000000 00000000 00000000 000011(00) 2+1=3
00000000000 00000000 00000000 00001(100) 1=1
10000000 00000000 00000000 00000010 原碼 -2
11111111 11111111 11111111 11111110 補碼 取反加一
111111111 11111111 11111111 1111111(0) 結果的補碼
100000000 00000000 00000000 0000001 結果的原碼=-1
*/
//無符號右移
System.out.println(-2>>>1); //2147483647
/*
11111111 11111111 11111111 11111110 補碼
011111111 11111111 11111111 1111111(0) 結果的補碼
*/
//寫程序計算2的8次方
System.out.println(2*2*2*2*2*2*2*2);
//普通程序員:循環*
//高端程序員
System.out.println(1<<8);
}
}
二、程序的結構
順序結構、條件分之結構、循環結構
實例1:
//條件分支結構-if
//if語句語法格式:
/*
if(比較表達式){
語句體;
}
運行流程:
先計算比較表達式的值,看返回值是true還是false
如果是true,就執行語句體。
如果是false,就不執行語句體。
*/
class If_Demo1{
public static void main(String [] args){
int a=3;
if(a<2){
System.out.println("經過比較,a小於2");
}
System.out.println("程序執行完成");
}
}
實例2:
//1、比較表達式的值無論簡單還是復雜,結果必須為boolean類型。
//2、當if語句控制的語句體是一條語句,大括號可以省略
//3、當if語句控制的語句體是多條語句,必須寫大括號
//4、***要求,無論語句體是一條還是多條,咱們統一加大括號!
class If_Demo2{
public static void main(String [] args){
int age=17;
if(age>=8&&age<18); //這個語句是對的。
System.out.println("用戶屬於防沈迷群體");
}
}
Java基礎三