黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Java教程
Java標識符與關鍵字
Java變量
Java數據類型
Java運算符
Java控制語句
Java方法
Java面向對象
Java對象的創建和使用
Java封裝
Java中static和this
Java繼承
Java方法覆蓋和多態
Java super
Java基礎練習題

Java for循環語句

在不少實際問題中有許多具有規律性的重復操作,因此在程序中就需要重復執行某些語句。一組被重復執行的語句稱之為循環體,能否繼續重復,取決于循環的終止條件。循環結構是在一定條件下反復執行某段程序的流程結構,被反復執行的程序被稱為循環體。循環語句是由循環體及循環的終止條件兩部分組成的。

為了幫助大家理解循環語句存在的意義,我們來看一段代碼:

System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
System.out.println("hello world!");
//...
//...

以上程序的業務背景是:輸出100行“hello world!”,如果我們像以上方式進行代碼編寫的話,代碼將無法得到重復使用,大家也可以看到“System.out.println("hello world!")”這行代碼重復出現,直到輸出100個為止。顯然程序應該找一種更好的實現方式,這個時候我們就可以借助java語言中的循環語句來實現了。

java中的循環語句共包括三個,分別是:for循環、while循環、do..while循環,接下來我們先來學習for循環。

for循環的語法格式如下圖所示:

for循環語法結構

圖6-13:for循環語法結構

對以上for循環語法結構進行說明:初始化表達式最先執行,并且在整個循環當中初始化表達式只執行一次,布爾表達式結果是true或者false,true表示循環可以繼續執行,false表示循環結束,循環體當中的代碼就是需要反復執行的代碼,更新表達式一般是用來更新某個變量的值,更新操作之后可能布爾表達式的結果就不再是true了。那么for循環的執行順序以及原理如下圖所示:

for循環語句執行順序及原理

圖6-14:for循環語句執行順序及原理

對于for循環來說,初始化表達式、布爾表達式、更新表達式都不是必須的,當布爾表達式缺失的時候,沒有條件控制的前提下,會形成死循環,我們來看一下最簡單的for循環形式:

for(;;){
	System.out.print("死循環、");
}

執行結果如下圖所示:

圖6-15:死循環輸出結果

最常見的for循環是怎樣的呢?看以下代碼:

for(int i = 1; i <= 10; i++){
	System.out.println("i = " + i);
}

運行結果如下圖所示:

for循環輸出1~10

圖6-16:for循環輸出1~10

對以上代碼進行分析:首先執行int i = 1,并且只執行一次,定義初始化變量i,賦值1,然后判斷i <= 10結果為true,則執行循環體打印i = 1,循環體結束之后,執行i++,然后i變成了2,繼續判斷i <= 10結果為true,則執行循環體打印i = 2,如此循環執行,直到打印i = 10之后,再執行i++讓i變成了11,然后判斷i <= 10結果為false,循環結束,這樣就完成了1~10的輸出,當然程序不是固定的,大家也可以把條件i <= 10修改為i < 11,這樣也是可以的。

關于for循環的使用我們還需要注意初始化變量的作用域,在for循環當中聲明的變量只在for循環中有效,當for循環結束之后,初始化變量的內存就釋放了/消失了,所以在for循環之外是無法訪問該變量的,例如以下代碼在編譯的時候就會報錯了:

//在for循環內部聲明的變量i只在for循環中可見/有效
for(int i = 1; i <= 10; i++){
	System.out.println("i = " + i);
}
//這行編譯報錯,i變量不存在
System.out.println("i = " + i);

當然,這樣寫就不會報錯了:

public static void test(){
	//變量的聲明位置放到了for循環之外
	int i = 1;
	for(; i <= 10; i++){
		System.out.println("i = " + i);
	}
	//這里就可以訪問變量i了
	System.out.println("i = " + i);
}

為什么這樣寫就可以了呢?那是因為i變量的作用域已經被擴大了,不再只是for循環中可以使用,for循環之外也可以使用,換句話說,以上的for循環結束之后i變量的內存并不會被釋放。后續的程序可以繼續使用。i變量的作用域是在整個test()方法中都有效,直到test()方法執行結束的時候才會釋放i變量的內存空間。

接下來我們再來看看for循環還有哪些其它的寫法:

for(int i = 10; i > 0; i--){
	System.out.println("i = " + i);
}
System.out.println("-------------分割線---------------");
for(int i = 10; i > 0; i -= 2){
	System.out.println("i = " + i);
}
System.out.println("-------------分割線---------------");
for(int i = 100; i >= 10; i /= 3){
	System.out.println("i = " + i);
}

以上程序運行結果,請看下圖:

for循環的其它編寫方式執行結果

圖6-17:for循環的其它編寫方式執行結果

接下來,我們再使用for循環實現1~100所有數字的求和,實現思路是:定義變量i,初始值從1開始,每循環一次加1,這樣就可以取到1~100的每一個整數了,那么求和怎么做呢?求和就是將1~100的每一個整數累加,這必然需要提前定義一個變量,使用變量實現累加,例如:a += 1,a += 2,a += 3...,代碼如下所示:

int sum = 0;
for(int i = 1; i <= 100; i++){
	sum += i;
}
System.out.println("sum = " + sum);

運行結果如下所示:

圖6-18:1~100所有整數求和

通過以上程序我們可以學到什么?編程語言當中的累加可以使用擴展類賦值運算符+=來實現,另外sum變量為什么定義到for循環外面,而不是定義到循環體當中呢?那是因為當定義到循環體內之后,每一次循環體在執行的時候,都會重新定義sum變量,這樣會讓sum變量歸0,無法達到累加的效果。

接下來,我們在以上程序的基礎之上實現1~100所有奇數的和,編程思路是:在累加之前先判斷變量i是否為奇數,如果是奇數則累加,這就需要在sum += i外面套一個if語句進行控制,代碼如下所示:

int sum = 0;
for(int i = 1; i <= 100; i++){
	if(i % 2 != 0){
		sum += i;
	}
}
System.out.println("sum = " + sum);

運行結果如下所示:

圖6-19:1~100所有奇數和的執行結果

其實以上的方式是將每一個數字取出來,然后再判斷是否為奇數,這種方式會導致循環次數達到100次,實際上可以換成另外一種解決方案,假設從1開始,每次累加2,那么每次取出的數字為1,3,5...,這樣正好每次取出的數字都是奇數,可以直接累加了,這樣循環的次數基本上會減半,效率則提高了,這種代碼既優雅,又高效。請看以下代碼:

int sum = 0;
for(int i = 1; i < 100; i += 2){
	sum += i;
}
System.out.println("sum = " + sum);

運行結果如下所示:

圖6-20:1~100所有奇數和的執行結果

以上演示的所有循環都是單層的,循環當中可以嵌套循環嗎?答案是:當然可以,之前我們就說過所有控制語句都是可以嵌套使用的,當循環A中嵌套循環B的時候就等于在A循環體中的代碼是B循環。其實大家在學習循環嵌套的時候完全沒必要特殊化對待,完全可以把A循環體當中的B循環看做是一段普通的java代碼。接下來我們看一段代碼:

//循環5次(B循環)
for(int i = 1;i <= 5; i++){
	System.out.print("i = " + i + ",");
}

System.out.println();

//循環2次(A循環)
for(int j = 1;j <= 2; j++){
	System.out.print("j = " + j + ",");
}

System.out.println();

//將B循環放到A循環體當中
for(int j = 1;j <= 2; j++){ //A循環(2次)
	
	for(int i = 1;i <= 5; i++){ //B循環(5次)
		
		System.out.print("i = " + i + ",");
		
	}
}

運行結果如下圖所示:

for循環嵌套

圖6-21:for循環嵌套

分析以上for循環嵌套,請看下圖:

for循環嵌套分析

圖6-22:for循環嵌套分析

分析循環嵌套的小竅門,如下圖所示:

for循環嵌套小竅門

圖6-23:for循環嵌套小竅門

學習了for循環嵌套的使用,我們一起來寫一下經典的九九乘法表,九九乘法表的結構大家還記得嗎,我們一起來回顧一下小學的知識(嘿嘿):

Java技術架構

圖6-24:九九乘法表結構

通過觀察九九乘法表結構我們可以看出來它有9行,所以可以得出一定需要以下代碼:

public static void main(String[] args) {
	for(int i = 1; i <= 9; i++){
		System.out.println("i = " + i);
	}
}

運行結果如下:

Java應用

圖6-25:九九乘法表9行

觀察上圖我們可以得出i是行號,那么再次觀察九九乘法表的規律得知,第1行1個式子,第2行2個式子,第3行3個式子...,第9行9個式子,那么結論是第i行有i個式子,以上循環確定為外層循環,共循環9次,外層循環每循環一次要保證能夠輸出九九乘法表的1整行。那么輸出九九乘法表1整行的時候又需要一個循環進行控制,而且這個循環被放到內部,循環的次數隨著行號的變化而變化。代碼如下所示:

for (int i = 1; i <= 9; i++) {

	for (int j = 1; j <= i; j++) {

		System.out.print(i * j + " ");

	}

	System.out.println();

}

運行結果如下所示:

Java應用

圖6-26:九九乘法表每個表達式的執行結果

分析以上代碼,請看下圖:

Java系統開發

圖6-27:分析九九乘法表程序

接下來我們在每一個“結果”前添加“i * j = ”,代碼如下所示:

for (int i = 1; i <= 9; i++) {

	for (int j = 1; j <= i; j++) {

		System.out.print(i + "*" + j + "=" + i * j + " ");

	}

	System.out.println();

}

運行結果如下所示:

圖6-28:九九乘法表運行結果

通過以上代碼的學習,需要每位讀者能夠掌握什么是循環,為什么要使用循環,for循環的語法結構是什么,for循環的執行順序以及原理是什么,嵌套的for循環又應該怎么理解,大家也可以挑戰一下三層for循環嵌套,或者更多??傊甪or循環在實際開發中使用非常頻繁,大家務必掌握。

全部教程
主站蜘蛛池模板: 欧美性xxxxxx性 | 手机看片a永久免费看大片 手机看片91精品一区 | 天天碰天天摸天天操 | 最近2019好看的中文字幕 | 日本一区二区在线不卡 | 精品偷国情拍在线视频 | 日韩无毛 | 日本综合久久 | 日韩福利一区 | 夜夜影视 | 国产午夜精品福利 | 日日摸夜夜添夜夜添aa | 人人插人 | 免费在线成人网 | 国产成 人 综合 亚洲绿色 | 九九天天影视 | 免费黄色看片网站 | 日韩欧美不卡一区二区三区 | 国产在线97色永久免费视频 | 日韩久久精品视频 | 日本免费观看95视频网站 | 视频精品一区二区三区 | 一级黄色一级片 | 久久线看观看精品香蕉国产 | 青青草国产精品免费 | 国产精品xxxav免费视频 | 欧美黄站 | 黄色a三级三级三级免费看 黄色a三级免费看 | a一级毛片录像带 录像片 | 亚洲一区二区综合 | 老司机午夜精品视频 | 高清freexxxx性 | 欧美日韩国产手机在线观看视频 | 青春草视频在线免费观看 | 国产成人综合在线视频 | 中文字幕在线免费观看视频 | 日韩免费片 | 欧美视频网站免费看 | 国产一区二区三区在线看片 | 国产日韩欧美在线观看不卡 | 一个人在线看的www视频 |