学号 2017-2018-20172309 《程序设计与数据结构》第六周学习总结

学号 2017-2018-20172309 《程序设计与数据结构》第六周学习总结

教材学习内容总结

  • 学会了怎么构建一个简单的数组:
  • 定义:数组是一组数据的集合,其中的每个数据称为元素。注意:Java中数组也是对象,其中的元素可以是任意类型,但是同一个数组只能放类型相同的数据。
  • 步骤:
    • 声明数组类型的引用变量。
      //int [] list;
    • 用new语句将数组实例化、为他们分配空间并且为每个元素设置默认值。一般为0。//list=new int[长度]
    • 初始化,为每个数据配上合适的值。//list[0]=1; list[1]=2;
  • 其实可以一句话解决啦int []list=new int[长度];
  • 了解了多维数组:
    • 理解:假定某个宾馆有三层,每层有三个房间。
      int[][] room=new int[3][3];只不过数组的索引从0开始
    • 第三层:|第一间房|第二间房|第三间房|
    • 第二层:|第一间房|第二间房|第三间房|
    • 第一层:|第一间房|第二间房|第三间房|
    • 本质:多维数组可以理解为数组的数组。例如:

      { {1,2,3},
        {4,5,6},
        {7,8,9} } 
  • 粗略了解了数组的边界:

    • 一个数组的索引是从0开始的。假设你设置的长度是5,你想访问最后一个元素,你可以用索引值4来访问。但是如果你用5访问,那就··

      错误: 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:对象数组是个什么鬼东西?它于二维数组有什么关系?
  • 问题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);

     String[] student=new String[2];

    给数组赋值:
    student[0]=s1;
    student[1]=s2;
    用UML图表示:

    他与二维数组很相似,相当于上面二维数组例子中的数组中又有数组。

  • 问题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:对可变长度参数表是如何理解的?
  • 问题3解决方案:

    可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

    注意:可变参数必须在后面,当多于一个参数时,必须放在前面如public static int add(int x,int ...args)

    特点:

    1.只能出现在参数列表的最后;
    2...位于变量类型和变量名之间,前后有无空格都可以;
    3.调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

代码调试中的问题和解决过程

  • 问题1:
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码托管


上周考试错题总结

  • 错题1:
正确答案: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用法不是开发必须的。甚至许多开发商认其为不良用法。

其他(感悟、思考等,可选)

这一章看起来挺简单的,其实是有难度的。就像做题,看答案一看就会,但是实际做起来是根本做不来的。在做课后例题的过程中,发现以前的很多代码的格式、用法都有写不出来的情况,所以要抓紧复习以前的内容。

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172310
    • 结对照片
    • 结对学习内容
      • XXXX
      • XXXX
      • ...

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 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

参考文献

  1. java中数组的介绍与引用
  2. 可变长度参数列表介绍
  3. Java 平均数与标准差的计算
  4. Markdown的简要使用

猜你喜欢

转载自www.cnblogs.com/dky-wzw/p/8834265.html