1. 程式人生 > >Java基礎三

Java基礎三

println 大括號 四種 ring 執行 運算 == bool 完成

一、位運算符

  之前學習的運算符,都是基於變量的,或者常量的。

實例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基礎三