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

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

教材学习内容总结

第五六章整体上来讲主要学习了条件判断与循环。小的知识点主要还有:

1.语句执行的顺序称为控制流,方法调用会引起控制流的改变。
2.相等性运算符由两个并列的等号组成,不要和只有一个等号的赋值运算符想混淆。
3.相等性运算符和关系运算符的优先级比算术运算符的优先级低。
4.在三种逻辑运算符中,逻辑非具有最高的优先级,其次是逻辑与,最后是逻辑或。逻辑运算符经常用于构成复杂的条件。
5.编写语句时适当的缩进格式能够增强程序的可读性。
6.if-else语句、语句块、if语句的嵌套的使用。
7.数据比较(包括浮点数的比较、字符的比较、对象的比较、)
8、while、do、for语句的使用 。
9、switch语句的使用。
10、迭代器的理解。
11、ArrayList的运0用。

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


  • 问题2:字符与字符串的比较

  • 问题2解决方案:字符和字符串是两种不同的数据类型,字符表示表示了一个字符的原始值;而字符串是对象,由String类定义。相等性运算符和关系运算符可用来比较字符,但是不可以用来比较字符串。比较两个String对象的方法主要有.equalcompareTO
    (1) ==:比较的是两个字符串内存地址的数值是否相等,属于数值比较;
    .equals():比较的是两个字符串的内容,属于内容比较。
    以后进行字符串相等判断的时候都使用.equals()
    参考资料:
    java 中“==”“equal” 的区别
    (2)参考资料:

    JAVA中compareTo方法的详细介绍


  • 问题3:不理解contine语句和break语句之间的区别

  • 问题3解决方案:
    break和continue都是用来控制循环结构的,主要是停止循环。

    (1)break:

    有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。

    这是我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。

    (2)continue:

    continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。

    (3)多层嵌套for循环里的break语句和continue语句
    简单的说就是:在多层嵌套for循环里面break是跳出包continue这一层for循环的所有循环,跳出之后不会继续执行continue这一层for循环的剩余循环而continue是跳出包裹continue这一层for循环的这一次 循环,跳出之后会继续执行continue这一层for循环的剩余循环
    参考资料:
    资料一
    资料二
    资料三


  • 问题四:对迭代器和ArrayList类的理解不清楚
  • 问题四解决方案:
    通过做课本上的习题SR5.24,SR5.25加深了对迭代器的理解,通过做SR5.27,5.28和5.29加深了对``ArrayList`类的理解。
    参考资料:
    迭代器的理解
    ArrayList类的理解

  • 问题五:for-each循环是什么
  • 问题五解决方案:
    用到了数组,有点看不懂,暂且记下参考资料:
    "for-each"参考资料

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

  • 问题1:pp5.3中出现把0当作了偶数,出现了逻辑错误。现将错误代码和改过后的代码呈现:
    错误代码:

    改过后的代码:

  • 问题1解决方案:
    通过上网查资 料知道字符型(char)0强转为int后是48,不是0;可以先将字符型(char)转换为String类型,再将String型转换为int型即可,转换方法见截图。


  • 问题2:pp5.7编译时出现如下错误:

  • 问题2解决方案:在使用嵌套语句时一定要弄清楚各层之间的关系,{}的使用要恰当。

代码托管


上周考试错题总结

  • 错题1

    理解情况:构造函数中不返回值,构造方法只有void类型的不返回值。所有的方法都隐含返回某个东西,因此必须有一个返回语句。但是,如果程序员希望编写一个不返回任何内容的方法,因此不需要返回语句,那么它就必须是void方法(该方法的头有“void”作为返回类型)。

  • 错题2

    理解情况:一旦方法终止,用调用该方法的方法控制重新执行。在这种情况下,m2调用m4,因此当m4终止时,m2恢复。

  • 错题3

    理解情况:局部变量是那些被声明为“本地”的方法,也就是说,它们只能在该方法中访问。全局变量是可以从任何地方访问的变量,而参数则是传递到方法中的变量。实例数据可以被认为是整个对象的全局变量。

  • 错题4

    理解情况:实例数据是组成类的实体,可能是任何类型的实体,无论是原始的还是对象的,并且可能是公共的或私有的。通过使用对象作为实例数据,它允许在其他类上构建类。类具有其他类的实例数据的关系称为has-a关系。

  • 错题5

    理解情况:所有被声明为私有的类的所有项只能访问该类中的实体,不管它们是实例数据还是方法。在这种情况下,由于这两种方法只从Rational的其他方法(包括构造函数)调用,因此它们被声明为私有,以提高信息隐藏的程度。注意,答案C不是一个正确的答案,因为reduce方法调用了gcd方法,所以其中一个方法是从构造函数以外的方法调用的。

  • 错题6

    理解情况:在A的情况下,值0 (int)扩大到double。在C的情况下,添加的是生成0.3,然后调用doublefoo。D中的参数列表是非法的,因为它包含两个双参数,而不是1。

  • 错题7

    理解情况:所有的Java方法都返回一个单独的项,不管它是一个原始数据类型的对象,还是void。保留字continue用于退出循环的其余部分并再次测试该条件。

  • 错题8

    理解情况:应该封装一个对象,以保护其数据和方法不受不适当的访问。封装是一种概念,对象应该避免意外(或故意)的误用。

  • 错题9

    理解情况:静态方法是类本身的一部分,而不是实例化的对象,因此静态方法在类的所有实例化对象中共享。由于静态方法是共享的,因此不能访问非静态实例数据,因为所有非静态实例数据都是特定于实例化对象的。静态方法可以访问静态实例数据,因为与方法一样,实例数据在类的所有对象中共享。静态方法也可以访问传递给它的参数

  • 错题10

    理解情况:Java不支持多重继承,但是通过实现接口有一些多重继承的能力。由于类可以实现任意数量的接口,所以该类本质上是使用接口类,就像在这个类中定义了这些接口一样。因此,这个类继承了接口的方法和常量。此外,该类可以扩展另一个类,从而直接和间接地从多个类继承。这与多重继承不完全相同,但它与Java的概念一样接近。

  • 错题11

    理解情况:测试是必需的,因为所有的软件都会有错误。复杂系统在发布之前尤其需要测试。所寻找的错误类型是逻辑错误和运行时错误。在实现过程中,所有语法错误都将被识别和修复。

  • 错题12

    理解情况:可比较的是一个接口,该类必须定义compareTo方法,并显式地声明它实现可与之相比较的实现。大多数类都没有实现可比较的

感想

这两周的JAVA任务完成起来难度很大,有的时候真的有点崩溃,比如自己写的程序由于一些输入错误一次又一次的失败,还有逻辑性的错误更是让人难受。有时候感觉心真的好累好累,不过当看到自己写的程序完美运行的那一刻又觉得这一切是那么的值得。在学习的过程中我意识到方法是很重要的,希望自己在学习的过程中逐渐总结出一套适合自己的学习方法。继续加油吧!加油加油加油!!!!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 28/28 1/1 16/16
第二周 710/738 1/2 20/36
第三周 426/1164 1/3 16/52
第四周 1068/2232 2/5 20/72
第五周 604/2928 1/6 22/94
  • 计划学习时间:20小时

  • 实际学习时间:22小时

  • 改进情况:增加了在JAVA这门课上的学习时间,以后还得继续加强对JAVA的学习,在增加学习时间的同时要注意提高效率,尽力打好基础。

参考资料

原文地址:https://www.cnblogs.com/zhaoxiaohai/p/8777687.html