提到for迴圈,我們肯定就想到一種寫法:
for (int x=0;x<3; x++)
這是一種很常見的寫法,但是使用for迴圈,我們都形成了一種固化的思維,其實for迴圈也可以很不一樣。
for迴圈的格式是這樣的:
for(初始化表示式;迴圈條件表示式;迴圈後的操作表示式)
如果我們這樣寫乙個for迴圈:
編譯沒有通過,並且編譯器提示我們,第二個表示式應該是乙個boolean型別。以上我們提到for迴圈的格式,第二個應該是乙個條件表示式,正如編譯器提示我們的那樣,應該是乙個真值或者假值,如果為真,則迴圈執行,如果為假,那麼就跳出迴圈,所以如上**肯定是不行 的。
所以我們可以這樣寫:
for(system.out.println("1");true;system.out.println("3"))
這樣寫編譯能夠通過,但是恆真的條件會讓**陷入死迴圈。(我們不可以寫恆假的表示式,如果寫乙個恆假的表示式編譯會報錯)
我們可以看到是3和4進行了迴圈結果的輸入,並沒有迴圈輸出1,為了能夠清楚看到for迴圈的執行順序,我們把**稍微改一下:
所以其實我們只需要有乙個控制迴圈的條件表示式(第二個表示式)就可以了,初始化表示式和迴圈之後的操作表示式其實是可以不用寫的,初始化可以寫在迴圈外面,操作表示式可以寫在迴圈體裡面
int x=0;
for(;x<3;)
但是如果我們的x變數如果只作為迴圈增量控制,那最好不要這麼寫,還是要把定義寫在初始化表示式裡,這樣如果for迴圈結束,x這個變數空間也就釋放了,不再占用記憶體空間,如果把變數定義在迴圈外,那麼它會在迴圈結束還一直占用記憶體,不利於系統 的優化。
我們知道有這種寫法:
for(;;)
迴圈的條件表示式預設為true,所以這是最簡單的無限迴圈的寫法。
在實際應用中,我們可能會遇到這種情況:
for迴圈初始化多個變數,迴圈結束後的語句有多個
for (int a=0,b=10;a<=5&&b>=5;a++,b-- )
for迴圈和while迴圈可以互換,但兩者格式上的不同也決定了兩者有所差別,比如之前提到的變數的作用域。當變數值作為迴圈增量存在時,區別就體現出來了,如果只作為 迴圈增量,用for比較好,變數被釋放,不占用記憶體空間。
不一樣的迴圈佇列
在九度 了一道還算不錯的佇列題目,記錄一下,陣列實現的迴圈佇列 題目描述 大家都知道資料結構裡面有乙個結構叫做迴圈佇列。顧名思義,這是乙個佇列,並且是迴圈的。但是現在,淘氣的囧哥給這個迴圈佇列加上了一些規矩,其中有5條指令 1 push k,讓元素k進佇列。2 pop,對頭元素出佇列。3 query...
不一樣又不一樣的 木板接水
空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...
我們不一樣
前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...