大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java教程
Java標(biāo)識符與關(guān)鍵字
Java變量
Java數(shù)據(jù)類型
Java運(yùn)算符
Java控制語句
Java方法

Java for循環(huán)語句

在不少實(shí)際問題中有許多具有規(guī)律性的重復(fù)操作,因此在程序中就需要重復(fù)執(zhí)行某些語句。一組被重復(fù)執(zhí)行的語句稱之為循環(huán)體,能否繼續(xù)重復(fù),取決于循環(huán)的終止條件。循環(huán)結(jié)構(gòu)是在一定條件下反復(fù)執(zhí)行某段程序的流程結(jié)構(gòu),被反復(fù)執(zhí)行的程序被稱為循環(huán)體。循環(huán)語句是由循環(huán)體及循環(huán)的終止條件兩部分組成的。

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

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!");
//...
//...

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

java中的循環(huán)語句共包括三個,分別是:for循環(huán)、while循環(huán)、do..while循環(huán),接下來我們先來學(xué)習(xí)for循環(huán)。

for循環(huán)的語法格式如下圖所示:

for循環(huán)語法結(jié)構(gòu)

圖6-13:for循環(huán)語法結(jié)構(gòu)

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

for循環(huán)語句執(zhí)行順序及原理

圖6-14:for循環(huán)語句執(zhí)行順序及原理

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

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

執(zhí)行結(jié)果如下圖所示:

圖6-15:死循環(huán)輸出結(jié)果

最常見的for循環(huán)是怎樣的呢?看以下代碼:

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

運(yùn)行結(jié)果如下圖所示:

for循環(huán)輸出1~10

圖6-16:for循環(huán)輸出1~10

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

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

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

當(dāng)然,這樣寫就不會報錯了:

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

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

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

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);
}

以上程序運(yùn)行結(jié)果,請看下圖:

for循環(huán)的其它編寫方式執(zhí)行結(jié)果

圖6-17:for循環(huán)的其它編寫方式執(zhí)行結(jié)果

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

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

運(yùn)行結(jié)果如下所示:

圖6-18:1~100所有整數(shù)求和

通過以上程序我們可以學(xué)到什么?編程語言當(dāng)中的累加可以使用擴(kuò)展類賦值運(yùn)算符+=來實(shí)現(xiàn),另外sum變量為什么定義到for循環(huán)外面,而不是定義到循環(huán)體當(dāng)中呢?那是因?yàn)楫?dāng)定義到循環(huán)體內(nèi)之后,每一次循環(huán)體在執(zhí)行的時候,都會重新定義sum變量,這樣會讓sum變量歸0,無法達(dá)到累加的效果。

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

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

運(yùn)行結(jié)果如下所示:

圖6-19:1~100所有奇數(shù)和的執(zhí)行結(jié)果

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

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

運(yùn)行結(jié)果如下所示:

圖6-20:1~100所有奇數(shù)和的執(zhí)行結(jié)果

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

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

System.out.println();

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

System.out.println();

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

運(yùn)行結(jié)果如下圖所示:

for循環(huán)嵌套

圖6-21:for循環(huán)嵌套

分析以上for循環(huán)嵌套,請看下圖:

for循環(huán)嵌套分析

圖6-22:for循環(huán)嵌套分析

分析循環(huán)嵌套的小竅門,如下圖所示:

for循環(huán)嵌套小竅門

圖6-23:for循環(huán)嵌套小竅門

學(xué)習(xí)了for循環(huán)嵌套的使用,我們一起來寫一下經(jīng)典的九九乘法表,九九乘法表的結(jié)構(gòu)大家還記得嗎,我們一起來回顧一下小學(xué)的知識(嘿嘿):

Java技術(shù)架構(gòu)

圖6-24:九九乘法表結(jié)構(gòu)

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

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

運(yùn)行結(jié)果如下:

Java應(yīng)用

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

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

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

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

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

	}

	System.out.println();

}

運(yùn)行結(jié)果如下所示:

Java應(yīng)用

圖6-26:九九乘法表每個表達(dá)式的執(zhí)行結(jié)果

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

Java系統(tǒng)開發(fā)

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

接下來我們在每一個“結(jié)果”前添加“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();

}

運(yùn)行結(jié)果如下所示:

圖6-28:九九乘法表運(yùn)行結(jié)果

通過以上代碼的學(xué)習(xí),需要每位讀者能夠掌握什么是循環(huán),為什么要使用循環(huán),for循環(huán)的語法結(jié)構(gòu)是什么,for循環(huán)的執(zhí)行順序以及原理是什么,嵌套的for循環(huán)又應(yīng)該怎么理解,大家也可以挑戰(zhàn)一下三層for循環(huán)嵌套,或者更多。總之for循環(huán)在實(shí)際開發(fā)中使用非常頻繁,大家務(wù)必掌握。

主站蜘蛛池模板: 黑人欧美一级毛片 | 久久精品系列 | 国产精品中文 | 精品在线免费播放 | 一级毛片aa高清免费观看 | 亚洲欧美另类精品久久久 | 成人影视在线观看 | 国产成+人+亚洲+欧美+日韩 | 日日干日日操 | 国产精品免费一区二区区 | 特黄特黄aaaa级毛片免费看 | 色中色官网 | 九九精彩视频在线观看视频 | 伊人久久精品 | 国产在热线精品视频国产一二 | 国产999视频| 欧美做爱毛片 | 久久这里只精品国产99热 | 欧美一区二区免费 | 天天干天天操天天舔 | 高清不卡视频 | 中文字幕亚洲综合久久2 | 男人的天堂免费在线观看 | 午夜欧美性视频在线播放 | 中文字幕亚洲一区婷婷 | 久久视屏这里只有精品6国产 | 狠狠色丁香久久婷婷综合_中 | 狠狠操狠狠 | 奇米影视大全 | 四虎影院精品 | 一级毛片在线播放 | 成人国产一区 | 中文字幕专区 | 性色视频在线 | 91视频免费看| 久久影视在线观看 | 女人一级毛片免费观看 | 成人a毛片免费全部播放 | 成人免费午间影院在线观看 | 久草视频播放 | 九九在线精品视频 |