java 基礎三

1 運算符

1.1  比較運算符

  • 比較運算符的結果都是boolean類型,也即是要麼是true,要麼是false。
  • 比較運算符"=="不能寫成"="。

 

  • >
package java003;

/**
 * 2017/8/31.
 * 說明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a>b);//false
    }
}
  • <
package java003;

/**
 * 2017/8/31.
 * 說明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a<b);//true
    }
}
  • ==
package java003;

/**
 * 2017/8/31.
 * 說明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a==b);//false
    }
}
  • !=
package java003;

/**
 * 2017/8/31.
 * 說明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a!=b);//true
    }
}
  • >=
package java003;

/**
 * 2017/8/31.
 * 說明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a>=b);//false
    }
}
  • <=
package java003;

/**
 * 2017/8/31.
 * 說明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a<=b);//true
    }
}
  • instanceof
package java003;

/**
 * 2017/8/31.
 * 說明:
 */
public class OperateDemo {
    public static void main(String[] args) {
       String str = "hello";
       System.out.print(str instanceof String);//true
    }
}

 

1.2 邏輯運算符

  • &(與)、|(或)、!(非)、&&(短路與)、||(短路或)、^(異或)
  • 邏輯運算符用於連接兩個boolean類型的表達式。

 

  • 示例
package java003;

/**
 * 2017/8/31.
 * 說明:邏輯運算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
        int x = 3;
        System.out.print(x >= 2 && x <= 5);


    }
}

 

  • &的特點:
  • 如下圖所示:表達式1&表達式2的結果。
表達式1 表達式2 結果
true false false
true true true
false false false
false true false

 

 

 

 

 

  • &運算的規律:一假全假,全真爲真。

 

  • |的特點
  • 如下圖所示:表達式1|表達式2的結果。
表達式1 表達式2 結果
true true true
true false true
false true true
false false false

 

 

 

 

 

  • |運算的規律:一真全真,全假才假。

 

  • 示例:
package java003;

/**
 * 2017/8/31.
 * 說明:邏輯運算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
       int x = 5;
       System.out.print(x > 5 || x <6);


    }
}

 

  • !的特點
  • 如下圖所示:!表達式
表達式 結果
true false
false true

 

 

 

  • 非運算的規律:非假則真,非真則假。

 

  • 示例:
package java003;

/**
 * 2017/8/31.
 * 說明:邏輯運算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
       int x = 5;
       System.out.print(x == 5);
       System.out.print(!(x==5));


    }
}

 

  • ^
  • 如下圖所示:表達式1^表達式2
表達式1 表達式2 結果
true true false
false true true
true false true
true true true

 

 

 

 

 

  • 我們知道,在計算機中一般0表示false,1表示true,當然,需要聲明的是java中不是用0表示false,1表示true的,在java中,兩者不等價。
  • 異或的規律:相同爲0,不同爲1。即異或左右兩邊的表達式,如果相同,就是false,不同,就是true。
package java003;

/**
 * 2017/8/31.
 * 說明:邏輯運算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
       System.out.print(true^true);//false
        System.out.print(true^false);//true
        System.out.print(false^true);//true
        System.out.print(false^false);//false

    }
}

 

1.3 位運算符

  • <<(左移)、>>(右移)、>>>(無符號右移)、&(與)、|(或)、^(異或)、~(反碼)

 

  • 示例:6&3,int類型的數據在內存中是32位,此處爲了方便,就沒有畫32位了。
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int a = 6 ;
        int b = 3;
        System.out.print( a & b);//2
    }
}

  • 示例:6 | 3
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int a = 6 ;
        int b = 3;
        System.out.print( a | b);//7
    }
}

 

  • 示例:6^3
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int a = 6 ;
        int b = 3;
        System.out.print( a ^ b);//5
    }
}

  • 示例:~3
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( ~ b);//-4
    }
}

 

  • 示例:3<<2 ,左移一位,乘以2。
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( 3 << 2);//12
    }
}

 

  • 示例:3 >>2 ,右移一位除以2,如果首個數字是0,則右移的時候,左邊空位補0,;如果首個數字是1,則右移的時候,左邊空位補1。因爲在計算機中0表示正數,1表示負數。
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( b >> 2);//0
    }
}

  • 示例:3 >>>2,不管首位是0還是1,在左邊空位都是補0。
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( b >>> 2);//0
    }
}

 

  • 面試題1:最有效率的方式算出2*8等於幾?
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
       System.out.print(2 << 3);
    }
}
  • 面試題2:對兩個整數變量的值進行交換(不需要第三變量)
    • 思路①,有弊端,如果兩個整數的數值太大,會超出int範圍,會引起精度問題。  
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
       int a = 2;
       int b = 3;
       a = a - b ;
       b = a + b; 
       a = b - a;
       System.out.print("a="+a+",b="+b);

    }
}
    • 思路②  
package java003;

/**
 * 2017/8/31.
 * 說明:位運算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
       int a = 2;
       int b = 3;
       a = a ^ b;
       b = a ^ b ;
       a = a ^ b;
       System.out.print("a="+a+",b="+b);

    }
}

 

1.4 三元運算符

  • 格式:
    • (條件表達式) ? 表達式1 :表達式2;
    • 如果條件表達式爲true,運算後的結果是表達式1,
    • 如果條件表達式爲false,運算後的結果是表達式2。  

 

  • 示例:求兩個整數的最大值。
package java003;

/**
 * 2017/9/1.
 * 說明:三元運算符
 */
public class OperateDemo4 {
    public static void main(String[] args) {
        int a = 3;
        int b = 10;
        int c = (a >= b) ? a : b;
        System.out.print("最大值是:"+c);
    }
}

 

 

2 程序的流程控制

  • 程序的流程控制分爲:
    • 順序結構
    • 分支結構
    • 循環結構  

 

2.1 順序結構

  • 示例:
package java003;

import sun.applet.Main;

/**
 * 2017/9/1.
 * 說明:順序結構
 */
public class OperateDemo5 {
    public static void main(String[] args) {
        System.out.print("哈哈");
        System.out.print("呵呵");
        System.out.print("嘻嘻");
        System.out.print("笨笨");
    }
}

 

2.2 分支語句

2.2.1 分支語句之if語句

  • 格式1
if(條件表達式){
     執行語句;  
}

 

  • 格式2
if(條件表達式){
   執行語句1;
}else{
   執行語句2;
}

 

 

  • 格式3
if(條件表達式1){
   執行語句1;
}else if(條件表達式2){
  執行語句2;
}else{
  執行語句3;
}

 

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 說明:if
 */
public class IfDemo1 {
    public static void main(String[] args) {
        int x = 3;
        if(x > 1){
            System.out.println("正確");
        }
        System.out.println("結束");

    }
}

 

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 說明:if
 */
public class IfDemo2 {
    public static void main(String[] args) {
        char gender = '男';
        if(gender == '男'){
            System.out.println("性別爲男");
        }else{
            System.out.println("性別爲女");
        }


    }
}

 

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 說明:if
 */
public class IfDemo3 {
    public static void main(String[] args) {
        int x = 3;
        if(x >1){
            System.out.print("a");
        }else if(x >2){
            System.out.print("b");
        }else if(x >3){
            System.out.print("c");
        }else{
            System.out.print("d");
        }



    }
}

 

  • 練習一:用戶輸入指定的數字,然後輸出對應的星期幾?
package java003;

/**
 * 2017/9/1.
 * 說明:
 */
public class IfTest1 {
    public static void main(String[] args) {
        int i = 5;
        if(i == 1){
            System.out.print("星期一");
        }else if(i == 2){
            System.out.print("星期二");
        }else if(i == 3){
            System.out.print("星期三");
        }else if(i == 4){
            System.out.print("星期四");
        }else if(i == 5){
            System.out.print("星期五");
        }else if(i == 6){
            System.out.print("星期六");
        }else if(i == 7){
            System.out.print("星期日");
        }else{
            System.out.print("輸入錯誤");
        }

    }
}

 

  • 練習二:根據指定月份,輸出對應的季節
package java003;

/**
 * 2017/9/1.
 * 說明:
 */
public class IfTest2 {
    public static void main(String[] args) {
        int month = 3;
        if((month == 3) || (month == 4 )|| (month == 5)){
            System.out.print("春季");
        }else if((month == 6) || (month == 7 )|| (month == 8)){
            System.out.print("夏季");
        }else if((month == 9) || (month == 10 )|| (month == 11)){
            System.out.print("秋季");
        }else if((month == 12) || (month == 1 )|| (month == 2)){
            System.out.print("冬季");
        }else{
            System.out.print("輸入錯誤");
        }

    }
}

 

2.2.2 分支語句之switch語句

  • 格式
switch(表達式){
  case 值1:
      執行語句1;
  break;
  case 值2:
      執行語句2;
  break;
  ……
  default:
       執行語句n; 
 break;
}    
    • 說明:在JDK7之前,表達式可以是byte、short、int和char類型。在JDK7之後,支持String類型。  

 

 

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 說明:switch
 */
public class SwitchDemo {
    public static void main(String[] args) {
        int x = 3;
        switch (x){
            case 1:
                System.out.print("x=1");
                break;
            case 2:
                System.out.print("x=2");
                break;
            case 3:
                System.out.print("x=3");
                break;
            default:
                    System.out.print("呵呵");
                break;

        }


    }
}

 

  • 練習:根據數字輸出對應的星期幾?
package java003;

/**
 * 2017/9/1.
 * 說明:輸入數字對應星期幾?
 */
public class SwitchTest {
    public static void main(String[] args) {
       int day = 3;
       switch (day){
           case 1:
               System.out.print("星期一");
               break;
           case 2:
               System.out.print("星期二");
               break;
           case 3:
               System.out.print("星期三");
               break;
           case 4:
               System.out.print("星期四");
               break;
           case 5:
               System.out.print("星期五");
               break;
           case 6:
               System.out.print("星期六");
               break;
           case 7:
               System.out.print("星期七");
               break;
           default:
               System.out.print("輸入錯誤");
               break;
       }


    }
}

 

2.2.3 if和switch的區別

  • if
    • ①對具體的值進行判斷。
    • ②對區間進行判斷。
    • ③對運算結果是boolean類型的表達式進行判斷。  

 

  • switch
    • ①對具體的值進行判斷。
    • ②值得個數是固定的。  

 

2.3 循環結構

2.3.1 while循環

  • 格式
while(條件表達式){
   執行語句;  
}

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 說明:while
 */
public class WhileDemo {
    public static void main(String[] args) {
        int x = 1 ;
        while(x <= 3){
            System.out.println("x="+x);
            x++;
        }


    }
}
package java003;

/**
 * 2017/9/1.
 * 說明:while
 */
public class WhileDemo {
    public static void main(String[] args) {
        int x = 1 ;
        while(x++ <= 3){
            System.out.println("x="+x);
        }


    }
}

 

  • 練習:獲取1到10的和。
package java003;

/**
 * 2017/9/1.
 * 說明:計算從1到10的和
 */
public class WhileTest {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1 ;
        while(i<= 10 ){
            sum += i;
            i++;
        }
        System.out.println("1到10的和是:"+sum);

    }
}

 

2.3.2 do-while循環

  • 格式
do{
    執行語句;

}while(條件表達式);

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 說明:
 */
public class DoWhileDemo {
    public static void main(String[] args) {
        int x = 1;
        do{
            System.out.println("x="+x);
            x++;
        }while(x <= 3);


    }
}

 

  • do-while語句的特點:無論條件是否滿足,循環體至少執行一次。

 

2.3.3 for循環

  • 格式
for(表達式1;表達式2;表達式3){
    執行語句;
}

 

 

  • for循環的執行流程
    • ①表達式1只讀一次,判斷表達式2,爲真就執行循環體,然後再執行表達式3,接着繼續判斷表達式2,重複整個過程,直到表達式2不成立爲止。
    • ②for和while循環是可以互換的,區別在於for爲了循環而定義的變量在for循環結束後就在內存裏釋放,而while循環使用的變量在循環結束後還可以繼續使用。
    • ③最簡單的無限循環:while(true){},for(;;){},無限循環存在的原因是並不知道循環多少次,而是根據某些條件,來控制循環(常見的是if和break搭配)。  

 

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 說明:
 */
public class ForDemo {
    public static void main(String[] args) {
        int sum = 0;
        for(int x = 1;x <= 10;x ++){
            sum += x;
        }
        System.out.println("sum="+sum);


    }
}

 

2.3.4 循環結構的應用場景

  • 當對某些代碼執行很多次的時候,使用循環結構來完成。

 

發佈了0 篇原創文章 · 獲贊 7 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章