1. 程式人生 > >Java——語言基礎(二)運算子、鍵盤錄入和流程控制語句

Java——語言基礎(二)運算子、鍵盤錄入和流程控制語句

運算子

什麼是運算子?

  • 對常量和變數進行操作的符號稱為運算子。

運算子的分類

  • 算數運算子:+、-、*、/、%、++、– ++、–單獨使用放在運算元前面和後面效果一樣; 參與運算

    • 放在運算元的前面,先自增或自減,然後再參與運算; -放在操作書後面,先參與運算再自增或自減;
  • 賦值運算子:=、+=、-=、*=、/=、%=

  • 比較運算子:==、!=、<、>、<=、>=、instanceof

  • 邏輯運算子:&並且、|或者、!非、^異或,&&短路與、||短路或 &&執行效率更高,先比較前一半,如果可以確定最終值則不執行後一半。

  • 位運算:&、|、^、~按位取反、<<左移、>>右移、>>>無符號右移。

    • 用法: &有0則0; |有1則1; ^:相同則0,相反則1 ~:按位取反,0變1,1變0;
  • 三目運算子:

    • (關係表示式)?表示式1:表示式2; 計算關係表示式的值,如果關係表示式為true運算後的結果式表示式1;否則是表示式2;

鍵盤錄入的基本格式

為什麼要鍵盤錄入?

 1. 為了讓程式的資料更符合開發的資料;
 2. 讓程式更靈活一點;

如何實現鍵盤的錄入? 格式:

  1. 導包: import java.util.Sanner; 2.建立鍵盤錄入物件: Scanner sc=new Scanner(
    System.in
    ); 3.通過物件獲取資料 int x=sc.nextlnt(); 當然除了錄入整形可也以錄入其它資料型別。

流程控制語句

什麼是流程控制語句? 在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說程式的流程對執行結果有直接的影響,所以我們必須清楚每條語句的執行流程,而且很多時候要通過控制語句的執行順序來實現我們要完成的功能。 流程控制語句的分類 順序結構 選擇結構 迴圈結構

順序結構

程式中最簡單最基本的流程控制,沒有特定的語法結構,按照程式碼的先後順序,依次執行,程式中大多數程式碼都是這樣執行的。

選擇結構

選擇結構(if) 也被稱為分支結構,選擇結構有特定的語法規則,程式碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的程式碼。

  • 選擇結構的分類:if語句、switch語句;
  • if語句的格式:
    • 格式一:
package org.westos.Select_Strict;

import java.util.Scanner;

public class IF_01 {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        if (a<b){
            System.out.println("true");
        }
    }
}
//true

//格式
/*if(比較表示式或boolean){
				語句體;
				}*/

先計算比較表示式的值,看返回的是true還是false。 如果是true,就執行語句體; 如果是false,就不執行語句體;

  • 格式二:
package org.westos.Select_Strict;

import java.util.Scanner;

public class IF_01 {
    public static void main(String[] args) {
//        //比較兩個數的大小

        int a=10;
        int b=20;
        int max;
        if (a>b){
            System.out.println('a');
        }else {
            System.out.println('b');
        }
    }
}
//b

//格式
/*if(比較表示式){
				語句體1;
				}else{
				 語句體2;
				 }
				 
				*/

先計算比較表示式的值,看返回的是true還是false。 如果是true,就執行語句體1; 如果是false,就執行語句體2;

  • 格式三
package org.westos.Select_Strict;

import java.util.Scanner;

public class IF_01 {
    public static void main(String[] args) {
//        //輸入一個分數,輸出分數所在的等級
        Scanner sc=new Scanner(System.in);
        int x=sc.nextInt();

        if (x>=90&&x<=100){
            System.out.println("優秀");
        }else if(x>=80&&x<90){
            System.out.println("良好");
        }else if(x>=70&&x<80){
            System.out.println("良好");
        }else if(x>=60&&x<70){
            System.out.println("良好");
        }else if(x>=0&&x<60){
            System.out.println("良好");
        }else {
            System.out.println("輸入正確的分數");
        }
    }
}
//85
//良好

//格式
/*if(比較表示式){
		語句體1;
    }else if(){
		語句體2;
	}else if(){
	    語句3;
	}
    ...
    else{
        語句體n+1;
    }
				*/

注意事項:

  • 比較表示式無論簡單還是複雜,結果必須是boolean型別;
  • if語句控制的語句體如果是一條語句,大括號可以省略;如果是多條語句,就不能省略;
  • 一般來說,有左大括號就沒有分號,有分號就沒有左大括號;
  • 三元運算子能實現的,if語句都可以實現,反之不成立;

什麼時候if語句實現不能用三元運算子改進? 當if語句控制的操作是一個輸出語句的時候不能,因為三元運算子是一個運算子,運算子操作完就應該有個結果而不是一個輸出。

switch語句

package org.org.westos.practice;

import java.util.Scanner;

public class switch01 {
    public static void main(String[] args) {
        //給定一個數值輸出對應星期
        Scanner rc=new Scanner(System.in);
        int x=rc.nextInt();

        switch (x){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("範圍1~7,不在範圍!");

        }

    }
}
/*6
星期六*/

格式: switch(表示式){ case 值1: 語句體1; break; case 值2: 語句體2; break; case 值3: 語句體3; break; … default: 語句體n+1; break; } 格式解釋:

  • switch表示這是switch語句

    • 表示式取值:byte,short,int,char
    • JDK5以後可以使列舉;
    • JDK7以後可以是String;
  • case後面跟的是要和表示式進行比較的值;

  • 語句體可以是一條或者多條;

  • break表示中斷,結束switch語句;

  • default語句表示所有情況都不匹配的時候,執行的內容。 注意事項:

  • case後面只能是常量,不能是變數,而且多個case後面的值不能相同;

  • default可以省略,但不建議,它的作用是讓程式碼更健壯;

  • break可以分情況省略,省略之後會有case穿透現象;

  • default不一定要放在最後,可以放在任意位置;

  • switch語句結束的條件:遇到break或者執行到末尾;

switch和if語句的區別 if語句適用場景:

  • 針對結果是boolean型別的判斷;
  • 針對一個範圍的判斷
  • 針對幾個常量的判斷

switch語句使用的場景:

  • 針對幾個常量值得判斷

迴圈結構

什麼是迴圈結構? 迴圈語句可以在滿足迴圈條件的情況下,反覆執行一段程式碼,這段被重複執行的程式碼被稱為迴圈體語句,當反覆執行這個迴圈體時需要在合適的時候把迴圈判斷條件是修改為false,從而結束迴圈,否則迴圈將一直執行下去,形成死迴圈;

分類

  • for迴圈;
  • while迴圈;

for迴圈

package org.org.westos.practice;

public class for02 {
    public static void main(String[] args) {
        //計算0~100之間所有偶數的和以及奇數和
        int S1=0,S2=0;
        for(int i=0;i<=100;i++){
            if(i%2==0){
                S1+=i;
            }else{
                S2+=i;
            }
        }
        System.out.println("偶數和為"+S1+","+"奇數和為"+S2);
    }
}
//偶數和為2550,奇數和為2500

格式

for(初始化表示式語句;判斷條件語句;控制條件語句) {
			迴圈體語句;
		}

執行流程

  • 執行初始化表示式語句;
  • 執行判斷條件語句,看其返回值是true還是false;是ture就繼續執行,是false就結束迴圈;
  • 執行迴圈體語句;
  • 執行控制條件語句;
  • 回到第二句繼續; 注意事項 a:判斷條件語句無論簡單還是複雜結果是boolean型別。 b:迴圈體語句如果是一條語句,大括號可以省略;如果是多條語句,大括號不能省略。建議永遠不要省略。 c:一般來說:有左大括號就沒有分號,有分號就沒有左大括號

while語句

package org.org.westos.practice;

public class while03 {
    public static void main(String[] args) {
        //統計1000以內的水仙花數以及個數
        int i=100;
        int num=0;
        while (i<1000){
            i++;
            int n1=i%10; //個位上的數字
            int n2=i/10%10; //十位上的數字
            int n3=i/100%10; //百位上的數字

            double result=Math.pow(n1,3)+Math.pow(n2,3)+Math.pow(n3,3);
            if(result==i){
                num++;
                System.out.println(result);
            }
        }
        System.out.println("一共有"+num+"個水仙花數");
    }
    
}
/*153.0
370.0
371.0
407.0
一共有4個水仙花數*/

基本格式:

while(判斷條件語句) {
				迴圈體語句;
			}

完整格式

  初始化條件語句;
		    while(判斷條件語句) {
				 迴圈體語句;
				 控制條件語句;
		   }

執行流程 a:執行初始化條件語句; b:執行判斷條件語句,看其返回值是true還是false

  • 如果是true,就繼續執行
  • 如果是false,就結束迴圈

c:執行迴圈體語句; d:執行控制條件語句 e:回到b繼續

do while 至少執行一次迴圈體;

三種迴圈語句的區別

  • do…while至少執行一次迴圈體;而for,while必須先判斷條件是否成立,然後決定是否執行迴圈體語句。
  • 如果你想在迴圈接收後繼續使用控制條件的那個變數,用while迴圈,否則用for迴圈。
  • 優先考慮for迴圈,因為變數及時的從記憶體中消失,可以提高記憶體的使用效率;

案例

package org.org.westos.practice;

public class case04 {
    public static void main(String[] args) {
        //使用for迴圈打印出層級*
        for(int i=1;i<6;i++){
            for (int j=1;j<i;j++){
                System.out.print("*");
            }
            System.out.println("\n");
        }
        
    }
}

// *
// **
// ***
// ****
// *****

注意 System.out.println("*");和System.out.print("*");的區別

控制跳轉語句

控制語句的跳轉和中斷

分類 break中斷 continue繼續 return返回

break的使用場景

  • 在選擇結構的switch中使用;
  • 在迴圈語句中使用;

作用 退出單層迴圈 退出多層迴圈 - 讓迴圈語句帶上標籤 - 格式:標籤名:語句

public class ForDemo66 {
    public static void main(String[] args) {
        //給迴圈加個標記
        wc:for(int i=1;i<=5;i++){
           nc:for(int j=1;j<=4;j++){
                if (j == 2) {
                    break wc; //根據標記來終止哪個迴圈
                }
                System.out.print("*");
            }
            System.out.println();

        }
    }
}

continue 在迴圈語句中使用; 作用:跳出一次迴圈執行下一次; return 作用:退出一個方法 跳轉到上層呼叫的方法。 結論

  • break:結束單層迴圈;
  • return:結束當前方法;
  • continue:結束當前迴圈,執行下一次迴圈;