热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:20172324201720182《程序设计与数据结构》第七周学习总结

201723242017-2018-2《程序设计与数据结构》第七周学习总结教材学习内容总结

20172324 2017-2018-2 《程序设计与数据结构》第七周学习总结

教材学习内容总结



  • 编写类是定义一组类似的对象;类建立了对象的特征和行为,但没有位声明的变量预留内存空间(除非所声明的变量是静态的)

  • 继承是从现有类派生新类的过程,并且是一种强有力的软件开发技术。

  • super可用来访问构造方法。父类的构造方法不能直接按名字调用,但可用super引用调用父类的构造方法。

  • 当子类和父类有相同的方法名时,子类方法将重写父类方法,子类方法优先。但是子类不能重写final方法。

  • 子类不可以重写父类的构造方法。因为构造方法没有返回类型。如果试图重写父类的构造方法,将会产生语法错误


教材学习中的问题和解决过程



  • 问题1:这是一个上周的问题,pp8.10中

    public class c810
    {
    public static void main(String[] args) {
    System.out.println();
    System.out.println(" "+args[0]);
    System.out.println("My name is "+args[1]);
    }
    }

    在VMware和idea中的运行方法?


  • 问题1解决方案:在VMware中是在编译之后运行的时候文件名后面加上要输入的字符。技术分享图片


在idea中是点开run,然后在Edit Configurations中输入参数。


  • 问题2:继承是支持软件复用的途径之一,那么软件复用有哪些途径?

  • 问题2解决方案:软件复用有三个层次:知识的复用、方法的复用和软件成分的复用,前两个属于知识工程的范畴,这里只讨论软件成分的复用。软件成分的复用包括

    (1)代码的复用,可以采用源代码剪贴、源代码包含和继承来实现。(2)设计结果的复用,是指复用某个软件系统的设计模型,适用于软件系统的移植。(3)分析结果的复用,是指复用某个软件系统的分析模型,适用于用户需求未改变,而系统体系结构变化的场合。

  • 问题3:子类为什么不可以重写其父类中的构造方法?

  • 问题3解决方案:构造方法是一个特殊的方法,与类名相同,但是没有返回类型。如果都试图重写父类的构造方法,将会产生语法错误,因为除了构造方法以外的所有方法都必须有返回类型。

  • 问题4:super引用的用法。

  • 问题4解决方案:(在结对同学的博客里引用的)

    第一种

    super.xxx(xxx为变量名或对象名)

    这种方法意义为,获取父类中的名字为xxx的变量或方法引用。

    使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作

    第二种

    super.xxx()(xxx为方法名)

    这种方法意义为,直接访问并调用父类中的方法。

    第三种

    super()这种方法意义为,调用父类的初始化方法,其实就是调用父类中的public xxx()方法;



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



  • 问题1:上周的pp8.6中我编写出来会报一个

    java.lang.NullPointerException的错误,原因?


  • 问题1解决方案:出现java.lang.NullPointerException错误提示的原因是接口类型的对象没有用具体的类初始化。最后用一个new实例化就能解决问题了。

  • 问题2:课后习题9.1中如何表示硬币面值。

  • 问题2解决方案:有三种想法,一种时scanner任意面值,一种是创建一个有规定面值的数组,第三种似乎才是正确简单方法...就是heads就是0,另外一面就是1,这样似乎才对。(我现在知道这样不对了,因为一个硬币不管正反都是一个固定面值的...补写一个



public class MonetaryCoin extends Coin {

int [] num ={1,5,10,20,50,100};

int i,nu,sum=0 ;

public MonetaryCoin (){

super.flip() ;

}

public void flip(){

i = (int)(Math .random()*6 );

}

public int Monetaryreturn(){

nu = num [i];

return nu ;

}

public int Monetarysum(){

nu = num [i];

i ++;

sum += nu ;

return sum;

}

}

)而在其中书上要求用继承其父类的抛硬币功能。我开始只用了super(flip)引用flip方法,但这样还需要引用其他的变量,后来经过同学点醒直接用super()就应用Coin类的所有变量和函数。

代码托管

技术分享图片

(statistics.sh脚本的运行结果截图)

上周考试错题总结



  1. In Java, arrays are

    A . primitive data types

    B . objects

    C . interfaces

    D . primitive data types if the type stored in the array is a primitive data type and objects if the type stored in the array is an object

    E . Strings

    在 Java 中, 数组作为对象实现。该变量是存储整个数组的内存块的引用变量。但是, 数组是使用表示法名称 [index] 访问的, 而不是通过消息传递。





  1. The "off-by-one" error associated with arrays arises because

    A . the first array index is 0 and programmers may start at index 1, or may use a loop that goes one index too far

    B . the last array index is at length + 1 and loops may only iterate to length, missing one

    C . the last array element ends at length - 1 and loops may go one too far

    D . programmers write a loop that goes from 0 to length - 1 whereas the array actually goes from 1 to length

    E . none of the above, the "off-by-one" error has nothing to do with arrays

    数组初始化为 = 新类型 [x], 其中 x 是数组的大小。但是, 数组的法律索引为0到 x-1





  1. Given the following declarations, which of the following variables are arrays?

    int[ ] a, b;

    int c, d[ ];

    A . a

    B . a and b

    C . a and d

    D . a, b and d

    E . a, b, c and d

    第一个声明声明了 a 和 b 为 int 数组。第二个声明声明 c 和 d 是整数, 但在 d, 一个 int 数组的情况下。所以, a、b 和 d 都是 int 数组。





  1. If a and b are both int arrays, then a = b; will

    A . create an alias

    B . copy all elements of b into a

    C . copy the 0th element of b into the 0th element of a

    D . return true if each corresponding element of b is equal to each corresponding element of a (that is, a[0] is equal to b[0], a[1] is equal to b[1] and so forth) and return false otherwise

    E . return true if a and b are aliases and return false otherwise

    "=" 是赋值运算符。如果两个变量都是基元, 则比左变量获取右变量的副本 (因此, 如果 a 和 b 是 int 值和 b = 5, 则 a 将变为 5)。但是, 由于 a 和 b 是数组, 引用变量 a 被设置为引用变量 b, 导致 a 和 b 引用内存中的同一数组, 或者它们现在是彼此的别名。这个地方可以参考书上例8.8中temp数组和collection数组的赋值。





  1. A Java main method uses the parameter (String[ ] variable) so that a user can run the program and supply "command-line" parameters. Since the parameter is a String array, however, the user does not have to supply any parameters.

    A . true

    B . false

    程序员希望允许用户提供命令行参数时, main 方法需要参数。然后, 在 java 命令行之后输入的任何内容将被接受为命令行参数。如果是由空格分隔的几个单词, 则每个单词都存储为单独的字符串数组元素。例如, "java foo" 类喜在变量 [0] 和 "那里" 将存储 "hi" 在变量 [1] 为可能的用途。





  1. In Java, an array can only store one type of data. For instance, you cannot create an array that stores both double and String values.

    A . true

    B . false

    数组称为齐次类型。这意味着数组中存储的值类型必须与每个元素相同。该类型由声明确定。因此, int [] x 只使 x 成为 int 值的数组。因此, 任何数组都不能存储双打和字符串。





  1. So long as one is only accessing the elements of an ArrayList, its efficiency is about the same as that of an array. It‘s only when one begins to insert or remove elements towards the front portion of an ArrayList that its efficiency deteriorates.

    A . true

    B . false

    ArrayLists 是作为数组实现的, 因此, 只要一个只访问 ArrayList 的元素, 效率就与数组相同。但是, 当对 ArrayList 的前半部分进行插入或删除时, 即当大量的元素复制必须发生时降低其效率。


结对及互评


点评模板:



  • 博客中值得学习的或问题:

    • 教材学习内容总结得很到位

    • super引用解决了我的疑问欸!可以说是非常及时了,我要去引用解决我的问题了。

    • super中形参与实参应该一一对应。

    • 开学两个月了...我看了你的学习进度条才理解这个学习进度条的意义...


  • 代码中值得学习的或问题:

    • pp9.3我觉得你弄复杂了,我在最高层的包里定义了所有变量和函数,第二层的包一个super()就可以了欸...

      public class readtexts extends readmaterial {
      public readtexts(String name, int pages, String keywords) {
      super(name, pages, keywords);
      }
      }


    • 硬币的面值不应该只是0和1...虽然我也是这样编的,应该创建一个数组把数据放在数组里,比如1分5角1元。



  • 基于评分标准,我给本博客打分:14 。得分情况如下:



  1. 正确使用Markdown语法(加1分)

  2. 模板中的要素齐全(加1分)

  3. 教材学习中的问题和解决过程, 加4分

  4. 代码调试中的问题和解决过程, 加4分

  5. 本周有效代码超过300分行,加2分

  6. 其他加分,加2分



  • 排版精美的加一分

  • 进度条中记录学习时间与改进情况的加1分


点评过的同学博客和代码



  • 本周结对学习情况

    • 21号

    • 结对学习内容

      • 实验四的讨论,发现实验4都有共同的问题在getR哪里。果然是搭档...不会的都一样。




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

程序设计越学到后面会发现前面的东西越来越重要,如果基础没有打好,知识点与知识点间就会出现

学习进度条






































































代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2001/220/20
第二周329/5002/318/38
第三周619/10002/522/60
第四周817/17342/738/98
第五周674/24081/930/128
第六周1136/28702/1030/158
第七周1000/37911/1132/190

参考资料



  • 《Java程序设计与数据结构教程(第三版)》


  • 软件复用

  • java.lang.NullPointerException



推荐阅读
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • vue使用
    关键词: ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了GregorianCalendar类的基本信息,包括它是Calendar的子类,提供了世界上大多数国家使用的标准日历系统。默认情况下,它对应格里高利日历创立时的日期,但可以通过调用setGregorianChange()方法来更改起始日期。同时,文中还提到了GregorianCalendar类为每个日历字段使用的默认值。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
author-avatar
ALI韩帅该
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有