java中可以用浮点作为循环变量吗_Java千问:Java循环语句的几个冷门知识点你都知道吗?...
我們在進行Java開發的時候,經常會用到循環結構,但是有幾個關于循環的“冷門”知識點,不知道你是不是都已經掌握了呢?我們一起來看看
一、大括號可以不寫嗎?
我們都知道,如果每次循環過程中要執行的語句只有一條,那么就可以不用寫大括號。但事實真的如此嗎?請看下面的代碼:
大家可以看到,在循環中只有一條語句,但是并不能通過語法編譯。這是為什么呢?因為Java語言規定:循環語句中重復執行的語句不能是一條單獨的局部變量定義語句。這里所說的“定義局部變量語句”也可以指創建對象的語句,例如以下代碼也不能通過編譯:
同時,這個規律還可以延伸到條件語句,也就是說,if語句中也不能只有一條單獨的局部變量定義語句,例如以下代碼:
如果我們在以上三段代碼中,給循環或條件語句都添加了大括號,語法錯誤自然就消失了:
二、如何定義多個循環變量?
我們平時定義的循環往往只有一個循環變量
例如在這個循環中,變量i就是一個循環變量。但是,如果開發過程中,需要我們在一個循環中定義并操作多個循環變量該怎么辦呢?這時候,我們可以把多個循環變量的定義語句用逗號隔開,并且對循環變量的操作語句也用逗號隔開就可以了。我們以定義并操作兩個循環變量為例作為示范,請看以下代碼:
需要說明的是:for循環結構只能有兩個分號(;),并且明確規定第一個分號前面的部分是用來定義并初始化循環變量的。我們知道,一個分號其實就表示一條語句的結束。所以說,第一個分號前面定義并初始化循環變量的語句只能有一條。既然只能有一條語句來定義循環變量,那么如果需要定義多個循環變量的話,這些循環變量只能同屬一種類型,因為多種類型的循環變量必須要用多條語句來定義。如果實在需要定義多個類型不相同的循環變量,我們可以干脆在循環語句之前就把這些變量都定義好。
三、能否以浮點數作為循環變量?
我們通常都會把循環變量定義為整數類型,如果把循環變量定義為浮點數可以嗎?我們來做個實驗,請看以下代碼
這段代碼想必大家都能看懂,那么這段代碼能否正常執行呢?答案是沒問題,它的執行效果如下:
很多人通過這個實驗就下定結論認為以浮點數作為循環變量沒有什么問題,但是我們必須清楚:當一個浮點數大到一定程度的時候,就會導致精度的丟失,從而出現一些奇怪的錯誤。比如,我們把上面代碼中start變量的初始值改成999999999;在這種情況下,重新運行程序,你會發現程序沒有任何輸出。為什么沒有任何輸出呢?變量f的初始值是start,而浮點數大到一定程度的時候,因為丟失了精度,會導致虛擬機錯誤的以為”f”與”start+5”的值是相同的,所以”f
但是,如果我們把循環條件從” f
我們通過這個例子想告訴大家:如果沒有十分的必要,不要使用浮點數作為循環變量,即使非要用浮點數充當循環變量,也一定要注意數值范圍不能太大,否則會因為精度丟失而出現一些奇怪的現象。
四、內層循環如何控制外層循環?
我們都知道,在Java語言中,有兩個能夠控制循環執行的關鍵字,分別是break和continue。通常情況下,這兩個關鍵字所控制的都是本層循環的執行,并不能控制到外層循環。但如果我們希望通過這兩個關鍵字控制外層循環的執行,可以先給外層循環添加一個“標簽”,通過在break或者是continue后面加標簽,達到控制外層循環的目的。我們來看如下代碼:
在這段代碼中,我們給內外兩層循環都加上了標簽,分別叫做inner和outer。我們在內層循環中,當”j==4”的情況下執行continue語句,并且在continue的后面加上外層循環的標簽outer,就能控制外層循環結束本次循環,直接進入下一次循環,因此循環代碼執行過程中,不會在控制臺上打印出”test”。其執行結果如下:
同理,我們如果把代碼中才”continue”換成”break”,也能夠在內層循環中直接跳出外層循環。
雖然從技術角度來說,Java語言能夠實現在內層循環中控制外層循環,但是從程序設計的角度來講,并不提倡這么做,因為我們更希望每一層循環“各司其職”,完成好自己的工作,如果需要從內層循環中直接中止外層循環的執行,可以設置一個局部變量,內層循環修改局部變量,而外層循環通過判斷局部變量的值來決定是否結束本層循環,這樣代碼的結構性和可讀性都會更好。
如想系統學習Java編程,歡迎觀看我在本站的視頻課程。
總結
以上是生活随笔為你收集整理的java中可以用浮点作为循环变量吗_Java千问:Java循环语句的几个冷门知识点你都知道吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《黑客帝国4》抢先看 基努·里维斯大秀中
- 下一篇: 北京市公布三项电动自行车新标准:加油站等