1. 程式人生 > >Java-筆記3

Java-筆記3

操作 自減 ati als eat art 局限性 || rgs

技術分享圖片

技術分享圖片

/*
運算符之一:算術運算符
+ - + - * / % (前)++ (後)++ (前)-- (後)-- +


*/
class AriTest {
    public static void main(String[] args) {
        
        //除號:/
        int num1 = 12;
        int num2 = 5;
        int result1 = num1 / num2;
        System.out.println(result1);//2

        int result2 = num1 / num2 * num2;
        System.out.println(result2);
//10 double result3 = num1 / num2; System.out.println(result3);//2.0 double result4 = num1 / num2 + 0.0;//2.0 double result5 = num1 / (num2 + 0.0);//2.4 double result6 = (double)num1 / num2;//2.4 double result7 = (double)(num1 / num2);//2.0 System.out.println(result5); System.out.println(result6);
// %:取余運算 //結果的符號與被模數的符號相同 //開發中,經常使用%來判斷能否被除盡的情況。 int m1 = 12; int n1 = 5; System.out.println("m1 % n1 = " + m1 % n1); int m2 = -12; int n2 = 5; System.out.println("m2 % n2 = " + m2 % n2); int m3 = 12; int n3 = -5; System.out.println(
"m3 % n3 = " + m3 % n3); int m4 = -12; int n4 = -5; System.out.println("m4 % n4 = " + m4 % n4); //(前)++ :先自增1,後運算 //(後)++ :先運算,後自增1 int a1 = 10; int b1 = ++a1; System.out.println("a1 = " + a1 + ",b1 = " + b1); int a2 = 10; int b2 = a2++; System.out.println("a2 = " + a2 + ",b2 = " + b2); int a3 = 10; ++a3;//a3++; int b3 = a3; //註意點: short s1 = 10; //s1 = s1 + 1;//編譯失敗 //s1 = (short)(s1 + 1);//正確的 s1++;//自增1不會改變本身變量的數據類型 System.out.println(s1); //問題: byte bb1 =127; bb1++; System.out.println("bb1 = " + bb1); //(前)-- :先自減1,後運算 //(後)-- :先運算,後自減1 int a4 = 10; int b4 = a4--;//int b4 = --a4; System.out.println("a4 = " + a4 + ",b4 = " + b4); } } /* 結果: ------------------------- 2 10 2.0 2.4 2.4 m1 % n1 = 2 m2 % n2 = -2 m3 % n3 = 2 m4 % n4 = -2 a1 = 11,b1 = 11 a2 = 11,b2 = 10 11 bb1 = -128 a4 = 9,b4 = 10 ------------------------- */

技術分享圖片

/*
練習:隨意給出一個三位數的整數,打印顯示它的個位數,十位數,百位數的值。
格式如下:
數字xxx的情況如下:
個位數:
十位數:
百位數:

例如:
數字153的情況如下:
個位數:3
十位數:5
百位數:1

*/
class AriExer {
    public static void main(String[] args) {
        
        int num = 187;
        
        int bai = num / 100;
        int shi = num % 100 / 10;//int shi = num / 10 % 10;
        int ge = num % 10;
        
        System.out.println("百位為:" + bai);
        System.out.println("十位為:" + shi);
        System.out.println("個位為:" + ge);

    }
}

/* 結果
---------------------------
百位為:1
十位為:8
個位為:7
---------------------------
*/

技術分享圖片

技術分享圖片

/*
運算符之二:賦值運算符
=  +=  -=  *=  /=  %= 


*/
class SetValueTest {
    public static void main(String[] args) {
        //賦值符號:=
        int i1 = 10;
        int j1 = 10;

        int i2,j2;
        //連續賦值
        i2 = j2 = 10;

        int i3 = 10,j3 = 20;
        
        //*********************
        int num1 = 10;
        num1 += 2;//num1 = num1 + 2;
        System.out.println(num1);//12

        int num2 = 12;
        num2 %= 5;//num2 = num2 % 5;
        System.out.println(num2);

        short s1 = 10;
        //s1 = s1 + 2;//編譯失敗
        s1 += 2;//結論:不會改變變量本身的數據類型
        System.out.println(s1);

        //開發中,如果希望變量實現+2的操作,有幾種方法?(前提:int num = 10;)
        //方式一:num = num + 2;
        //方式二:num += 2; (推薦)
        
        //開發中,如果希望變量實現+1的操作,有幾種方法?(前提:int num = 10;)
        //方式一:num = num + 1;
        //方式二:num += 1; 
        //方式三:num++; (推薦)
        
        //練習1
        int i = 1;
        i *= 0.1;
        System.out.println(i);//0
        i++;
        System.out.println(i);//1

        //練習2
        int m = 2;
        int n = 3;
        n *= m++; //n = n * m++;    
        System.out.println("m=" + m);//3
        System.out.println("n=" + n);//6
        
        //練習3
        int n1 = 10;
        n1 += (n1++) + (++n1);//n1 = n1 + (n1++) + (++n1);
        System.out.println(n1);//32

    }
}

/* 結果:
-------------------------
12
2
12
0
1
m=3
n=6
32
-------------------------
*/

技術分享圖片

技術分享圖片

技術分享圖片

/*
運算符之三:比較運算符
==  !=  >  <  >= <=  instanceof

結論:
1.比較運算符的結果是boolean類型
2.區分 ==  和  = 
*/
class CompareTest {
    public static void main(String[] args) {
        int i = 10;
        int j = 20;

        System.out.println(i == j);//false
        System.out.println(i = j);//20

        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b2 == b1);//false
        System.out.println(b2 = b1);//true
    }
}

/* 結果:
-------------------------
false
20
false
true
-------------------------
*/

技術分享圖片

技術分享圖片

/*
運算符之四:邏輯運算符

&  && |  || ! ^

說明:
1.邏輯運算符操作的都是boolean類型的變量


*/
class LogicTest {
    public static void main(String[] args) {
        
        //區分& 與 &&
        //相同點1:& 與  && 的運算結果相同
        //相同點2:當符號左邊是true時,二者都會執行符號右邊的運算
        //不同點:當符號左邊是false時,&繼續執行符號右邊的運算。&&不再執行符號右邊的運算。
        //開發中,推薦使用&&
        boolean b1 = true;
        b1 = false;
        int num1 = 10;
        if(b1 & (num1++ > 0)){
            System.out.println("我現在在北京");
        }else{
            System.out.println("我現在在南京");
        }

        System.out.println("num1 = " + num1);
        

        boolean b2 = true;
        b2 = false;
        int num2 = 10;
        if(b2 && (num2++ > 0)){
            System.out.println("我現在在北京");
        }else{
            System.out.println("我現在在南京");
        }

        System.out.println("num2 = " + num2);

        // 區分:| 與 || 
        //相同點1:| 與  || 的運算結果相同
        //相同點2:當符號左邊是false時,二者都會執行符號右邊的運算
        //不同點3:當符號左邊是true時,|繼續執行符號右邊的運算,而||不再執行符號右邊的運算
        //開發中,推薦使用||
        boolean b3 = false;
        b3 = true;
        int num3 = 10;
        if(b3 | (num3++ > 0)){
            System.out.println("我現在在北京");
        }else{
            System.out.println("我現在在南京");
        }
        System.out.println("num3 = " + num3);


        boolean b4 = false;
        b4 = true;
        int num4 = 10;
        if(b4 || (num4++ > 0)){
            System.out.println("我現在在北京");
        }else{
            System.out.println("我現在在南京");
        }
        System.out.println("num4 = " + num4);
    }
}

/* 結果:
------------------------
我現在在南京
num1 = 11
我現在在南京
num2 = 10
我現在在北京
num3 = 11
我現在在北京
num4 = 10
------------------------
*/

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

/*
運算符之五:位運算符 (了解)

結論:
1. 位運算符操作的都是整型的數據
2. << :在一定範圍內,每向左移1位,相當於 * 2
   >> :在一定範圍內,每向右移1位,相當於 / 2



面試題:最高效方式的計算2 * 8 ?  2 << 3  或 8 << 1
*/
class BitTest {
    public static void main(String[] args) {
        int i = 21;
        i = -21;
        System.out.println("i << 2 :" + (i << 2));
        System.out.println("i << 3 :" + (i << 3));
        System.out.println("i << 27 :" + (i << 27));

        int m = 12;
        int n = 5;
        System.out.println("m & n :" + (m & n));
        System.out.println("m | n :" + (m | n));
        System.out.println("m ^ n :" + (m ^ n));

        //練習:交換兩個變量的值
        int num1 = 10;
        int num2 = 20;
        System.out.println("num1 = " + num1 + ",num2 = " + num2);

        //方式一:定義臨時變量的方式
        //推薦的方式
        int temp = num1;
        num1 = num2;
        num2 = temp;

        //方式二:好處:不用定義臨時變量  
        //弊端:① 相加操作可能超出存儲範圍 ② 有局限性:只能適用於數值類型
        //num1 = num1 + num2;
        //num2 = num1 - num2;
        //num1 = num1 - num2;

        //方式三:使用位運算符
        //有局限性:只能適用於數值類型
        //num1 = num1 ^ num2;
        //num2 = num1 ^ num2;
        //num1 = num1 ^ num2;

        System.out.println("num1 = " + num1 + ",num2 = " + num2);

    }
}

/* 結果:
---------------------------
i << 2 :-84
i << 3 :-168
i << 27 :1476395008
m & n :4
m | n :13
m ^ n :9
num1 = 10,num2 = 20
num1 = 20,num2 = 10
---------------------------
*/

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

/*
分支結構中的if-else(條件判斷結構)


一、三種結構

第一種:
if(條件表達式){
    執行表達式
}

第二種:二選一
if(條件表達式){
    執行表達式1
}else{
    執行表達式2
}

第三種:n選一
if(條件表達式){
    執行表達式1
}else if(條件表達式){
    執行表達式2
}else if(條件表達式){
    執行表達式3
}
...
else{
    執行表達式n
}



*/
class IfTest {
    public static void main(String[] args) {
        
        //舉例1
        int heartBeats = 79;
        if(heartBeats < 60 || heartBeats > 100){
            System.out.println("需要做進一步檢查");
        }

        System.out.println("檢查結束");
        
        //舉例2
        int age = 23;
        if(age < 18){
            System.out.println("你還可以看動畫片");
        }else{
            System.out.println("你可以看成人*電影了");
        }

        //舉例3
        if(age < 0){
            System.out.println("您輸入的數據非法");
        }else if(age < 18){
            System.out.println("青少年時期");
        }else if(age < 35){
            System.out.println("青壯年時期");
        }else if(age < 60){
            System.out.println("中年時期");
        }else if(age < 120){
            System.out.println("老年時期");
        }else{
            System.out.println("你是要成仙啊~~");
        }
    }
}

/* 結果:
--------------------------
檢查結束
你可以看成人*電影了
青壯年時期
--------------------------
*/

Java-筆記3