20172324 2017-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/200 1/2 20/20
第二周 329/500 2/3 18/38
第三周 619/1000 2/5 22/60
第四周 817/1734 2/7 38/98
第五周 674/2408 1/9 30/128
第六周 1136/2870 2/10 30/158
第七周 1000/3791 1/11 32/190

参考资料

原文地址:https://www.cnblogs.com/amberR/p/8909561.html

时间: 2024-10-11 01:28:08

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

20172324 2018-2019-1 《程序设计与数据结构》第一周学习总结

20172324 2018-2019-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 概述 软件质量 准确性:软件提供的功能是否正确(用户需要的) 可靠性:产品在规定的条件下,在规定的时间内完成规定功能的能力 健壮(易恢复)性:系统失效后,重新恢复原有的功能和性能的能力 可用性:在指定使用条件下,产品被理解. 学习.使用和吸引用户的能力 可维护性:在规定条件下,规定的时间内,使用规定的工具或方法修复规定功能的能力 可重用性:软件组建可用于其他软件开发的难易程度 可移植性:从一种环境

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

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

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

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

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

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

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

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172326 《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

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

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In