int [] list;
list=new int[長度]
list[0]=1;
list[1]=2;
int []list=new int[長度];
int[][] room=new int[3][3];
本質:多維數組能夠理解爲數組的數組。例如:html
{ {1,2,3}, {4,5,6}, {7,8,9} }
粗略瞭解了數組的邊界:java
一個數組的索引是從0開始的。假設你設置的長度是5,你想訪問最後一個元素,你能夠用索引值4來訪問。可是若是你用5訪問,那就··git
錯誤: ArrayIndexOutOfBountsException。編程
數組名.length
能夠得到數組長度。length是數組的一個屬性,只能讀取、不能修改!數組的copy:數組
書中在例子8.8中,簡略的提到了數組的拷貝。書中出現的問題是使用的數組的長度不夠,經過把數組的長的翻倍再把數據複製過來的方法把他解決的。數據結構
DVD[] temp=new DVD[collection.length*2];//collection是長度不夠的那個數組,乘2讓他的長度翻倍。 for (int dvd=0;dvd<collection.length;dvd++) temp[dvd]=collection[dvd];
問題1解決方案:數組是個很奇妙的東西,它裏面的數據更奇妙。這個元素能夠僅僅就是個元素,還能夠是一個對象,注:數組自己也是對象。這個對象還能夠包含其餘數據。例如:構造一個student類,他的屬性包括name和age.學習
public class Student { private String username; private int age; public Student(String username, int age) { this.username = username; this.age = age; } 後面還有getUsername()、getAge()、toString()方法沒寫如今咋們定義兩個student對象而且構建一個Student數組。
student s1=student("小明",21);
student s2=student("大明",22);thisString[] student=new String[2];給數組賦值:
student[0]=s1;
student[1]=s2;
用UML圖表示:
他與二維數組很類似,至關於上面二維數組例子中的數組中又有數組。.net
問題2:對於這段代碼如何理解的:設計
for(Book myBook : library) System.out.println(myBook);
問題2解決方案:這個東西在第六章提到過,於6.4.1中的for-each循環。在上述代碼中,他是處理涉及迭代器的問題的。這段代碼能夠這樣理解:對於圖書館中的每一本書,輸出他的相關信息。變量mybook依次取得集合中的每個Book對象的值,而循環體可以相應的處理它他也等價於:
Book myBook; while (bookList.hasNext()) { myBook=bookList.next(); System.out.println(myBook); }
問題3解決方案:
可變參數:適用於參數個數不肯定,類型肯定的狀況,java把可變參數當作數組處理。
注意:可變參數必須在後面,當多於一個參數時,必須放在前面如
public static int add(int x,int ...args)
特色:
1.只能出如今參數列表的最後; 2...位於變量類型和變量名之間,先後有無空格均可以; 3.調用可變參數的方法時,編譯器爲該可變參數隱含建立一個數組,在方法體中一數組的形式訪問可變參數。
問題1:在作pp8.1的時候,在輸出每一個數字前面的序號的時候也想使用的像書上的同樣,(書中是經過ASCII碼輸出A~Z。)我是想經過ASCII碼錶輸出0~50,可是作了半天后來別人告訴我ASCII碼裏只有0~9!!!! 瞬間崩潰
這是書中經過ASCII碼輸入A~Z的代碼。
for (int letter=0;letter<upper.length;letter++) { System.out.print((char)(letter+'A')); System.out.print(":"+upper[letter]); System.out.print("\t\t"+(char)(letter+'a')); System.out.println(": "+lower[letter]); }輸出結果:
A
B
C
...
問題1解決方案:最後才發現其實不須要那麼麻煩,只需使用
for (int b = 0; b <date1; b++) { System.out.println(); System.out.print(b +": \t\t");輸出結果:
0
1
2
...
問題2:在作題pp8.5的時候,出現的麻煩也挺多的。首先題目條件是輸入一組數據X1~Xn,這就讓我想到了書中的可變長度參數列表,書中給出的例子也是計算一組數據的平均值:
這是代碼:
public double average(int ... list)
{
double result =0.0;if (list.length !=0) { int sum =0 ; for(int sum : list) sum+=num; result=(double)sum/list.length; } return result; }這是方法的使用:
double mean1 = average( 42 , 69 , 97 );
double mean2 = average( 35 , 43 , 45 , 25 , 12 );
可是若是使用這個可變長度參數列表 那麼計算平均值的時候已經定義了一個數組,而後計算標準差的時候又得從新輸入這個數組!總不可能讓用戶輸入一個輸入兩次吧!而後我再想也許能夠在構建類的時候在實例數據就把這個參數列表定義好,可是!這已是一個方法,怎麼能再放到初始化裏呢?
問題2解決方案:最後由於對「可變長度參數列表」瞭解不夠透徹,因此仍是沒用那個東西。
我用的方法是:
public class pp8_5 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int [] list=new int[50]; //直接構建一個長度爲50的數組。 int count=0,sum1=0; //初始化計數變量count=0,總值加起來sum1=0.0 double average=0.0,variance=0.0,sum2=0.0;//初始化 平均數average 標準差variance。 String a="y";//初始化String 變量a爲"y" while(a.equalsIgnoreCase("y")&&count<=50)//當用戶輸入的(y/n)的答案是y時,繼續循環。 { System.out.println("Please enter the "+count+"'th number."); list[count]=scan.nextInt();//讓用戶輸入要計算的元素 sum1=sum1+list[count];//把輸入的元素加起來。 count++;//用戶輸入了count個元素 a=scan.nextLine();//消去前面scan.next()留下的回車符 System.out.println("If you want to continue,Enter 'y'! "); a=scan.nextLine();//讓用戶選擇是否繼續輸入數據(y/n) }
問題3解決方案:
個人代碼:
這個代碼的實現是首先構建一個可以包含30個對象的數組,而後運用循環依次讓用戶輸入帳戶的用戶名、帳號、餘額。以後輸入完一個帳戶後,讓用戶選擇是否須要輸入另外一個帳戶(y/n)。
問題4解決方法:在上面循環的時候第二次輸入帳戶信息沒有賦值給數組,致使那樣的錯誤。雖然是這樣的一個小錯誤,我卻用了半下午發現它,所以在之後的編程過程當中,必須邏輯緊密、一絲不苟!
正確答案:B 個人答案:C 錯誤緣由:在C選項中,若是x=0的話,它又將給x賦值爲零。而題目說的是把它放在一邊。
錯題2:
正確答案:A 個人答案:D 理解狀況:break語句只會跳出所在的循環,並執行下一個循環。
-錯題3:
正確答案:B 個人答案:A 理解狀況:咱們也能夠用比較運算符比較char類型數據,String類型數據只能用compareTo()、equals()、equalsIgnoreCase()進行比較。
-錯題4:
正確答案:E 儘管寫這樣的switch語句是不尋常的,但它是徹底合法的。switch語句執行的常規規則適用於在交換表達式表達式後執行匹配的case子句。在此以後,全部後續的條款都是按順序執行的,由於沒有中斷語句來終止開關/案例的執行。
-錯題5:
正確答案:A 在Java中,就像在大多數語言中同樣,循環語句基本上都是等價的(幾乎能夠互換)。它們的主要差別(s)與什麼時候評估控制條件以及是否有用於遞增/更新的語法有關。
錯題6:
正確答案:A 個人理解:switch語句是從第一條Case開始匹配,直至中止的語句。
錯題7:
正確答案:B 正確理解:break用法不是開發必須的。甚至許多開發商認其爲不良用法。
這一章看起來挺簡單的,實際上是有難度的。就像作題,看答案一看就會,可是實際作起來是根本作不來的。在作課後例題的過程當中,發現之前的不少代碼的格式、用法都有寫不出來的狀況,因此要抓緊複習之前的內容。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 075/200 | 1/1 | 05/20 | |
第二週 | 560/500 | 1/2 | 13/38 | |
第三週 | 972/1000 | 1/4 | 21/60 | |
第四周 | 694/1666 | 1/5 | 21/90 | |
第五週 | 1544/3095 | 1/6 | 30/90 | |
第六週 | 600/3627 | 1/7 | 30/120 |