1. 程式人生 > >3、引用型別、選擇與迴圈

3、引用型別、選擇與迴圈

1、引用型別

☆格式:先使用import匯入必須的包(如果需要);次之定義變數並建立物件賦值:資料型別 變數名 = new 資料型別();最後呼叫該例項方法:變數名.方法名();

☆鍵盤錄入類:Scanner
主要方法有:next()、nextInt()、nextDouble()、nextLine()(此方法可以解析空格、換行等操作)

import java.util.Scanner;//1.導包
public class MyScanner{
	public static void main(String[] args){
	Scanner sc = new Scanner
(System.in);//2.建立Scanner物件並變數賦值 int i = sc.nextInt();//3.通過變數名.方法()使用Scanner類中的方法,返回其值並賦值給i System.out.println("i = " + i); String s = sc.next();//獲取鍵盤輸入的字串 System.out.println("s = " + s); } }

☆隨機數類:Random
主要方法:nextInt(int maxValue) 產生[0,maxValue)範圍的隨機整數;nextDouble() 等等

import java.util.Random;
public
class MyRandom{ public static void main(String[] args){ Random r = new Random(); int i = r.nextInt(5)+1;//產生一個1-5之間的隨機數 System.out.println("i = " + i); double d = r.nextDouble();//產生一個隨機小數,範圍[0,1) System.out.println("d = " + d); } }

2、選擇結構

選擇語句:if和switch語句
☆if語句
單條件判斷格式:

public class MyIf1
{ public static void main(String[] args){ int a=2; if(a>3){ System.out.println("此去路遙久相隔"); } if(a<=2){ System.out.println("不知相逢何年月"); } } }

互斥條件判斷格式:

public class MyIf2{
	public static void main(String[] args){
	int a=2;
	if(a>3){
	System.out.println("此去路遙久相隔");
	}else{
	System.out.println("不知相逢何年月");
	}
}
}

多條件判斷格式:

public class MyIf3{
	public static void main(String[] args){
	int a=2;
	if(a>3){
	System.out.println("此去路遙久相隔");
	}else if{
	System.out.println("不知相逢何年月");
	}else{
	System.out.println("年少風流付與君");
	}
}
}

多層條件判斷:

public class MyIf4{
	public static void main(String[] args){
	int a=80;
	if(a>=60&&a<=100){
	if(a>=80){
	System.out.println("高手");
	}else{System.out.println("不過如此");
	}
	}else{System.out.println("異類");
	}
}
}

☆switch語句

public class MySwitch{
	public static void main(String[] args){
	int a=2;
	switch(a){
	case 1:
	System.out.println("這是1")breakcase 2:
	System.out.println("這是2")breakdefault:
	System.out.println("這是幾")break
	}
	}
}

注意:表示式的取值只能是:byte,short,int,char;JDK5以後可以是列舉;JDK7以後可以是String。如同if語句當中的else,default不是必須存在的,default語句表示所有情況都不匹配的時候,就執行該處的內容。與if語句不同,switch語句只能完成具體值的選擇,而不能指定取值區間。break表示中斷,結束的意思,可以結束switch語句。

2、迴圈結構

☆for迴圈
格式:
for(初始化表示式①;布林表示式②;步進表示式④){迴圈體③}
執行順序:
①②③④>②③④>②③④… ②不滿足為止。

public class MyFor{
	public static void main(String[] args ){
	for(int x=0; x<10; x++){
	System.out.println("我愛java!"+(x+1));
	}
	}
}

注意:①②③④四個部分均可以為空:當①為空時,注意變數作用域的範圍變化;當②為空時,為條件永遠為true的死迴圈;當③為空時,通常沒有意義;當④為空時,可以將其加入到迴圈體中,或同樣成為死迴圈。初始化表示式①的部分可以同時定義多個變數,步進表示式可以同時將多個迴圈相關變數改變,控制迴圈條件。

☆while迴圈語句
格式:
初始化表示式①
while(布林表示式②){
迴圈體③
步進表示式④ }
執行順序:①②③④>②③④>②③④… ②不滿足為止。

public class MyWhile{
	public static void main(String[] args ){
	int a=0;
	while(a<=10){
	System.out.println("我愛java!"+a);
	a++;
	}
	}
}

注意:與for迴圈的迴圈變數作用域不同,for迴圈的迴圈變數其作用域僅限於迴圈體內,而while迴圈的迴圈變數作用域不侷限在迴圈體內。與for迴圈的迴圈條件為空是是死迴圈不同,while迴圈的迴圈條件不能為空。我們經常會使用while(true)的方式根據需求完成一個死迴圈。

☆do while迴圈語句
格式:
初始化表示式①
do{
迴圈體③
步進表示式④
}while(布林表示式②);
執行流程:①③④>②③④>②③④… ②不滿足為止。

public class MyDoWhile{
	public static void main(String[] args) {
	int a=0;
	do{
	System.out.println("我愛java!"+a);
	a++;
	}while(a<=10)
	}
}

☆迴圈巢狀

public class Demo{
	public static void main(String[] args){
	for(int i=0; i<3; i++){//外層迴圈
	for(int j=0; j<5; j++){//內層迴圈
	System.out.println("外"+(i+1)+",內"+(j+1));
	}
	}
	}
}

☆無條件分支跳轉之break關鍵字
使用方式:無法單獨使用,必須將break關鍵字置於switch或迴圈語句中。
執行行為:不需要判斷任何條件,只要遇到break便直接跳出執行後續程式碼。會完全跳出選擇或者迴圈結構。break只能跳出最近的程式碼塊,不能跨越多級程式碼塊。

public class Break{
	public static void main(String[] args){
	for(int i=0;i<10;i++){
	 if(i==5) { break}
	  System.out.println(“我愛Java”+i);//輸出五次
	}
	}	
}

☆無條件分支跳轉之continue關鍵字
使用方式:無法單獨使用,必須將continue關鍵字置於迴圈語句中。
執行行為: 不需要判斷任何條件,只要遇到continue變直接跳出本輪迴圈進行下次迴圈。

public class Continue{
	public static void main(String[] args){
	for(int i=0; i<10; i++) {
	 if(i==5) {
	 continue;}
	 System.out.println(“我愛Java”+i);//只有第五次不會輸出
	 }
	}
}

☆無條件分支跳轉之標號語句(標籤)跳轉
當在雙層迴圈或者迴圈內有switch選擇語句時,我們發現,使用break或者continue所作用的物件均是內層語句,無法直接跳出外層迴圈,這時就需要使用標號語句跳轉了。
使用方式:在外層迴圈外的某行前邊,使用後邊跟有冒號”:”的識別符號,即定義完畢。使用時當在內層迴圈使用break或continue時後邊緊跟之前定義的標號即可。
執行行為:當外層迴圈外定義了標號時,內層使用break,終止內外雙層迴圈。內層使用continue,終止內層迴圈,繼續外層迴圈。

public class ExampleContinue{
	public static void main(String[] args){
	mark:for(int i=0; i<3; i++){
	for(int j=0; j<5; j++){
	if(i==1){
	continue mark;
	}
	System.out.println("外"+(i+1)+",內"+(j+1));//外2不會執行
	}
	}
}