初學Java,還在釐清觀念,
想問int[] arr=new int[10];這行已經宣告陣列了。
下面兩個迴圈是一樣的內容。
為什麼第一個for迴圈印出來是
arr 初始值:0 0 0 0 0 0 0 0 0 0
而不是直接輸出
arr 設定值:0 1 2 3 4 5 6 7 8 9
可以請版友解釋一下嗎?
public class TestArray {
public static void main(String[] args) {
int[] arr=new int[10];
System.out.print("arr 初始值:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
arr[i]=i;
}
System.out.print("\narr 設定值:");
for(int i=0;i<arr.length;i++)
System.out.print(arr[i]+" ");
System.out.println();
}
}
輸出
arr 初始值:0 0 0 0 0 0 0 0 0 0
arr 設定值:0 1 2 3 4 5 6 7 8 9
跟陣列沒關係,跟迴圈也沒關係
因為你先印出值 才 設定 arr[i]
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
arr[i]=i;
}
改成
for(int i=0;i<arr.length;i++){
arr[i]=i;
System.out.print(arr[i]+" ");
}
即可
為什麼每次貼程式碼
都只有部份程式碼會用</>
框起來?
我很好奇的是她到底看哪本書來學.
幫海綿大大補充
如果你直接貼程式碼,IT幫幫忙的Markdown編輯器會把Tab縮排的部分視為程式碼
導致你看到程式碼呈現不一的狀況
所以貼程式碼最好的方法,是先按下</>
後,會出現兩行三個```
在第一行設定你要貼的語言後
接著把程式碼貼在兩行三個```中間。
IT幫幫忙的Markdown編輯器會把Tab縮排的部分視為程式碼
原來如此,今天又學到新知識了
我是已經習慣直接打,不去按</>了。
Java SE 8 技術手冊,
ISBN:9863471712,作者:林信良
一級屠豬士
這一本喔~
這本也太舊了吧。
學技術量不要拿舊書學。
我去看了一下Java SE 6 技術手冊
這段程式碼是在教(未設定前)int 的初始值(0)
有點像宮大師的絕活「老猿掛印」
關隘不是在「掛」,而是在「回頭」
老師說這個版本比較穩定+Oracle還沒縮權限,所以上課用這個版,現在是更新到14了吧~ (倒~
我不知道老猿掛印的寓意,總之是初始值是0~ (畫重點
我記得良葛格這本最近會出新版吧?
那本不是給初學者學的.是用來查的.難怪你什麼都不會,卻又問一些問題以外的.書好不好,是一回事,但是你還不適合用這本來學.
你應該先看書籍前面會介紹書的定位,與適合的讀者.
去買別本書啦.
1.Java程式設計導論(第十版)
https://www.books.com.tw/products/0010671212?loc=P_0003_010
2.JAVA程式設計藝術(第十版)(國際版)
https://www.books.com.tw/products/0010749106?loc=P_0003_014
我之前去書局比較過這兩本書的Java
雖然版本偏舊 (跟樓主一樣是用SE8),但是範例和練習題品質算不錯
Java程式設計導論
JAVA程式設計藝術
以樓主完全初學者的程度,我會推薦樓主可以拿第一本打底
挫折感也比較不會這麼重
比較新的內容可以直接看網路資料就好
可是…《Java SE 8 技術手冊》裏沒這個範例喔!…XD
這個範例應該是從我開放的《Java SE 6 技術手冊》來的:
https://github.com/JustinSDK/JavaSE6Tutorial/blob/master/docs/CH05.md#%E7%AF%84%E4%BE%8B-52--arraydemojava
學習程式很重要的一點是掌握它的運行順序。您的程式碼有兩部分的先後次序需要釐清。
一、通常運行順序
一般而言,程式是由上往下一行一行Statement執行的,所以如下程式碼
int i = 1;
System.out.print(i);
i = 2;
運行步驟為:
因此輸出的結果會是1
二、for循環的運行順序
for (int i = 0; i < 3; i++) {
System.out.print(i);
}
運行步驟為:
如果兩者結合起來
int j = 2;
for (int i = 0; i < 3; i++) {
System.out.print(j);
j = i;
}
實際流程為:
輸出的結果會是:201
以後若遇到自己無法理解的情況,最簡單的方法就是每行輸出,觀察它的變化。
所以如下程式碼
int i = 1;
System.out.print(i);
int i = 2;
運行步驟為
給i賦值為1
輸出i的值
給i賦值為2
因此輸出的結果會是1 (不是2嗎?
我反問你為什麼會覺得是 2 ?
這邊又沒有非同步、執行緒的問題 (你應該也聽不懂)
就像在你ithelp的帳號改暱稱之前,
ithelp有辦法事先通靈你要改成什麼暱稱嗎?
因此輸出的結果會是1 (不是2嗎?
int i = 1; // 給 i 賦值 為 1
System.out.print(i); // 印出 i 這時 i = 1;
i = 2; // 重新給 i 賦值為 2
如果改成這樣
int i = 1; // 給 i 賦值 為 1
i = 2; // 重新給 i 賦值為 2
System.out.print(i); // 印出 i 這時 i = 2;
i 就是 2
這也是大大回答得重點
學習程式很重要的一點是掌握它的運行順序