天天看點

【java基礎】第3天——引用資料類型、流程控制、循環

引用資料類型

1.1Scanner類
我們要學的Scanner類是屬于引用資料類型,我們先了解下引用資料類型。
引用資料類型的使用
與定義基本資料類型變量不同,引用資料類型的變量定義及指派有一個相對固定的步驟或格式。
資料類型  變量名  =  new 資料類型();
每種引用資料類型都有其功能,我們可以調用該類型執行個體的功能。
變量名.方法名();
Scanner類
Scanner類是引用資料類型的一種,我們可以使用該類來完成使用者鍵盤錄入,擷取到錄入的資料。
Scanner使用步驟:
    導包:import java.util.Scanner;
建立對象執行個體:Scanner sc = new Scanner(System.in);
調用方法:
        int  i = sc.nextInt(); 用來接收控制台錄入的數字
        String s = sc.next(); 用來接收控制台錄入的字元串      
import java.util.Scanner;
public class ScannerDemo01 {
    public static void main(String[] args) {
        //建立Scanner引用類型的變量
        Scanner sc = new Scanner(System.in);
        //擷取數字
        System.out.println("請輸入一個數字");
        int n = sc.nextInt();
        System.out.println("n的值為" + n);
        //擷取字元串
        System.out.println("請輸入一個字元串");
        String str = sc.next();
        System.out.println("str的值為"      
1.2随機數類Random
這個Random類,它可以産生多種資料類型的随機數,在這裡我們主要介紹生成整數與小數的方式。
方法簡介
public int nextInt(int maxValue)    産生[0,maxValue)範圍的随機整數,包含0,不包含maxValue;
public double nextDouble()  産生[0,1)範圍的随機小數,包含0.0,不包含1.0。

    引用資料類型的使用方式,在學習鍵盤錄入Scanner時,我們已經學習過,在這裡,再次回顧一下:
Random使用方式:
import導包:所屬包java.util.Random  
建立執行個體格式:Random 變量名 = new      
import java.util.Random;

public class RandomDemo {
    public static void main(String[] args) {
        // 建立Random類的執行個體
        Random r = new Random(); 
        // 得到0-100範圍内的随機整數,将産生的随機整數指派給i變量
        int i = r.nextInt(100); 
        //得到0.0-1.0範圍内的随機小數,将産生的随機小數指派給d變量
        double d = r.nextDouble(); 
        System.out.println(i); 
        System.out.println(d); 
    }
}      

第2章流程控制語句

if語句
if語句是指如果滿足某種條件,就進行某種處理。例如,小明媽媽跟小明說“如果你考試得了100分,星期天就帶你去遊樂場玩”。這句話可以通過下面的一段僞代碼來描述。
如果小明考試得了100分
    媽媽星期天帶小明去遊樂場
在上面的僞代碼中,“如果”相當于Java中的關鍵字if,“小明考試得了100分”是判斷條件,需要用()括起來,“媽媽星期天帶小明去遊樂場”是執行語句,需要放在{}中。修改後的僞代碼如下:
if (小明考試得了100分) {
    媽媽星期天帶小明去遊樂場
}
上面的例子就描述了if語句的用法,在Java中,if語句的具體文法格式如下:
if (條件語句){ 
    執行語句;
    ……
}      
public class IfDemo01 {
    public static void main(String[] args) {
        int x = 5;
        if (x < 10) {
            x++;
        }
        System.out.println("x="      
if…else語句
if…else語句是指如果滿足某種條件,就進行某種處理,否則就進行另一種處理。例如,要判斷一個正整數的奇偶,如果該數字能被2整除則是一個偶數,否則該數字就是一個奇數。if…else語句具體文法格式如下:
if (判斷條件){
    執行語句1else{
    執行語句2      
public class IfDemo02 {
    public static void main(String[] args) {
        int num = 19;
        if (num % 2 == 0) {
            // 判斷條件成立,num被2整除
            System.out.println("num是一個偶數");
        } else {
            System.out.println("num是一個奇數");
        }
    }
}      
if…else if…else語句
if…else if…else語句用于對多個條件進行判斷,進行多種不同的處理。例如,對一個學生的考試成績進行等級的劃分,如果分數大于80分等級為優,否則,如果分數大于70分等級為良,否則,如果分數大于60分等級為中,否則,等級為差。if…else if…else語句具體文法格式如下:
if (判斷條件1) {
    執行語句1
} else if (判斷條件2) {
    執行語句2
}
...
else if (判斷條件n) {
    執行語句n
} else {
    執行語句n+1      
public class IfDemo03 {
    public static void main(String[] args) {
        int grade = 75; // 定義學生成績
        if (grade > 80) {
            // 滿足條件 grade > 80
            System.out.println("該成績的等級為優");
        } else if (grade > 70) {
            // 不滿足條件 grade > 80 ,但滿足條件 grade > 70
            System.out.println("該成績的等級為良");
        } else if (grade > 60) {
            // 不滿足條件 grade > 70 ,但滿足條件 grade > 60
            System.out.println("該成績的等級為中");
        } else {
            // 不滿足條件 grade > 60
            System.out.println("該成績的等級為差");
        }
    }
}      
選擇結構if語句與三元運算轉換
三元運算符,它和if-else語句類似,文法如下:
判斷條件 ? 表達式1 : 表達式2
三元運算符會得到一個結果,通常用于對某個變量進行指派,當判斷條件成立時,運算結果為表達式1的值,否則結果為表達式2的值。
例如求兩個數x、y中的較大者,如果用if…else語句來實作,具體代碼如下:
int x = 0;
int y = 1;
int max;
if (x > y) {
    max = x;
} else {
    max = y;
}
上面的代碼運作之後,變量max的值為1。其中3-8行的代碼可以使用下面的三元運算來替換。
int max      
循環語句while
while循環語句和選擇結構if語句有些相似,都是根據條件判斷來決定是否執行大括号内的執行語句。差別在于,while語句會反複地進行條件判斷,隻要條件成立,{}内的執行語句就會執行,直到條件不成立,while循環結束。while循環語句的文法結構如下:
while(循環條件){
執行語句
………
}
在上面的文法結構中,{}中的執行語句被稱作循環體,循環體是否執行取決于循環條件。當循環條件為true時,循環體就會執行。循環體執行完畢時會繼續判斷循環條件,如條件仍為true則會繼續執行,直到循環條件為false時,整個循環過程才會結束。      
public class WhileDemo {
    public static void main(String[] args) {
        int x = 1; // 定義變量x,初始值為1
        while (x <= 4) { // 循環條件
            System.out.println("x = " + x); // 條件成立,列印x的值
            x++; // x進行自增      
循環語句for
for循環語句是最常用的循環語句,一般用在循環次數已知的情況下。for循環語句的文法格式如下:
for(初始化表達式; 循環條件; 操作表達式){
    執行語句
    ………
}
在上面的文法結構中,for關鍵字後面()中包括了三部分内容:初始化表達式、循環條件和操作表達式,它們之間用“;”分隔,{}中的執行語句為循環體。
接下來分别用①表示初始化表達式、②表示循環條件、③表示操作表達式、④表示循環體,通過序号來具體分析for循環的執行流程。具體如下:
for(① ; ② ; ③){
    ④
}      
public class ForDemo01 {
    public static void main(String[] args) {
        int sum = 0; // 定義變量sum,用于記住累加的和
        for (int i = 1; i <= 4; i++) { // i的值會在1~4之間變化
            sum += i; // 實作sum與i的累加
        }
        System.out.println("sum = " + sum); // 列印累加的和      
循環語句do…while
do…while循環語句和while循環語句功能類似,其文法結構如下:
do {
執行語句
………
} while(循環條件);
在上面的文法結構中,關鍵字do後面{}中的執行語句是循環體。do…while循環語句将循環條件放在了循環體的後面。這也就意味着,循環體會無條件執行一次,然後再根據循環條件來決定是否繼續執行。      
public class DoWhileDemo {
    public static void main(String[] args) {
        int x = 1; // 定義變量x,初始值為1
        do {
            System.out.println("x = " + x); // 列印x的值
            x++; // 将x的值自增
        } while (x <= 4); // 循環條件      
無限循環
最簡單無限循環格式:
while(true){} 
或
for(;;){}      
循環嵌套
嵌套循環是指在一個循環語句的循環體中再定義一個循環語句的文法結構。while、do…while、for循環語句都可以進行嵌套,并且它們之間也可以互相嵌套,如最常見的在for循環中嵌套for循環,格式如下:
for(初始化表達式; 循環條件; 操作表達式) {
    ………
    for(初始化表達式; 循環條件; 操作表達式) {
        執行語句
        ………
    }
    ………
}      
1public class ForForDemo {
 2  public static void main(String[] args) {
 3      int i, j; // 定義兩個循環變量
 4      for (i = 1; i <= 9; i++) { // 外層循環
 5          for (j = 1; j <= i; j++) { // 内層循環
 6              System.out.print("*"); // 列印*
 7          }
 8          System.out.print("\n"); // 換行
 9      }
 10 }
 11}      

跳轉語句(break、continue)

1、break語句
在switch條件語句和循環語句中都可以使用break語句。當它出現在switch條件語句中時,作用是終止某個case并跳出switch結構。當它出現在循環語句中,作用是跳出循環語句,執行後面的代碼。關于在switch語句中使用break前面的例程已經用過了,接下來通過下面一段代碼,實作将當變量x的值為3時,使用break語句跳出循環,

public class BreakDemo {
    public static void main(String[] args) {
        int x = 1; // 定義變量x,初始值為1
        while (x <= 4) { // 循環條件
            System.out.println("x = " + x); // 條件成立,列印x的值
            if (x == 3) {
                break;
            }
            x++; // x進行自增      
當break語句出現在嵌套循環中的内層循環時,它隻能跳出内層循環,如果想使用break語句跳出外層循環則需要對外層循環添加标記。接下來将ForForDemo.java稍作修改,控制程式隻列印4行“*”


public class BreakDemo02 {
    public static void main(String[] args) {
        int i, j; // 定義兩個循環變量
        itcast: for (i = 1; i <= 9; i++) { // 外層循環
            for (j = 1; j <= i; j++) { // 内層循環
                if (i > 4) { // 判斷i的值是否大于4
                    break itcast; // 跳出外層循環
                }
                System.out.print("*"); // 列印*
            }
            System.out.print("\n"); // 換行      
continue語句用在循環語句中,它的作用是終止本次循環,執行下一次循環。接下來通過一個練習對1~100之内的奇數求和

public class ContinueDemo {
    public static void main(String[] args) {
        int sum = 0; // 定義變量sum,用于記住和
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) { // i是一個偶數,不累加
                continue; // 結束本次循環
            }
            sum += i; // 實作sum和i的累加
        }
        System.out.println("sum = "