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 |