zoukankan      html  css  js  c++  java
  • 《程序设计与数据结构》第五周学习总结

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

    教材学习内容总结

    • 了解逻辑以及条件符号的意义
    • if-else语句用法以及在嵌套语句的缩进意义
    • 浮点数是指二进制近似表示小数,所以比较大小时注意精度问题
    • 字符以及字符串比较时,是比较地址还是通过Unicode码来进行比较的区别。
    • while语句应当注意的问题,防止出现无限循环或循环出错。
    • switch语句中break语句的执行的意义
    • 条件运算符与条件语句的区别;其可读性劣于语句
    • do语句至少执行一次
    • for语句()中三个条件分别代表的三部分,变量的初始化,条件的判断(执行前计算),变量的增量计算

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

    • 问题1:字符串比较时,compareTo方法与其他问题中的比较
    • 问题1解决方案:compareTo方法是Comparable的方法。上周学习过程中还是理解的还是不够透彻。这次,在书上的举例中发现了compareTo方法的举例,其中有,
    int result = name1.compareTo(name2);
    


    直接将compareTo方法进行调用。但是,在第七章的PP7.4中,是将其首先在类中实现接口,再将其进行具体编译,指明不同条件下的输出结果。

    如图:

    但是,为什么在书中例题可以直接实现其调用呢,在jdk中进行查找,可以看到种类众多的不同数据类型的compareTo方法,
    且都在lang或Math下,这就意味着在这些类下,compareTo方法是直接可以调用的。其根本原因是因为它们都实现了接口comparable接口,并且实现了接口中的compareTo方法。所以,在自己编写类时,和其他类不同,并未事先实现,所以自然要自己实现接口。而compareTo的核心在于比较,而且其输出的int值更是可以进行自行规定。而这又要反过来运用if-else语句进行规定.同时括号内的参数也决定了它的比较对象。

    • 问题2:break语句对switch语句的影响
    • 问题2解决方案:
    • 在对书上6.1的例题的练习中,因为疏忽,只在最后一行输入了break,其结果,导致所有的case语句输出。换言之,在没有break的情况下,switch语句 一旦找到匹配的case分支(表达式的值与case后的值相等),程序开始执行这个case执行体,不在判断与后面case、default标签的条件是否匹配,除非遇到break才结束该执行体。也就是说,一旦遇到满足条件的case,且没有break的情况下,后续的case不再得到判断,而是直接变为执行体。所以说,对于switch语句,break不可或缺。同理还有default,使得在没有满足条件的情况下,依然有结果可以输出。

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

    • 问题1:首先是上周的代码脚本检测时报错的问题。

    • 问题1解决方案:在老师的指导下,首先逐行运行命令,在运行这行命令时出现问题。

    find . -name "*.java"| xargs cat | grep -v ^$ | wc -l
    

    这种问题需要逐个文件进行排查,经过查找,发现了一个问题文件,看到后我就想起了过程,当时需要将几个文件移动并修改名称,再次过程中将.class错误的命名为了.java。将文件删除后,一切恢复正常。

    • 问题2:PP5.1的编写

    • 问题2解决方案:编写完成后,无法执行语句,最后发现时while语句后多了一个分号,导致编译错误,但当时并未学习到do语句,所以在怀疑为什么不提示报错。当看到do-while时,发现,while语句后可以跟分号,但会产生不同的结果。

    • 问题3:PP5.3的编写

    • 解决方案:最后发现在读取字符串的长度时,将索引值与长度搞混,导致程序无法读取到数据,导致出错。索引值是由0开始的,而长度则是由1开始,所以不可搞混。

    • 问题4 : PP5.7的编写

    • 在有多个if和else时,出现了问题,例如

    if ()
    {}
    else
    {}
    else{}
    

    在这种情况下,会提示有else无if,也就是说if语句下若有多个语句需要继续判断时,(一个else不足以解决时)需要“else if”来执行。

    代码托管

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

    上周考试错题总结

    • 错题1

    The relationship between a class and an object is best described as

    • 原因,理解情况:

    • 类是方法,所以是抽象的,所以对象是在实例化后执行类方法的具体表现

    • 错题2

    In order to preserve encapsulation of an object, we would do all of the following except for which one?

    • 原因,理解情况:
    • 可以允许或不允许访问来保证其封装。但是final只是用来定义变量,与封装无关。
    • 错题3

    What happens if you declare a class constructor to have a void return type?

    A.You'll likely receive a syntax error

    B.The program will compile with a warning, but you'll get a runtime error

    C.There's nothing wrong with declaring a constructor to be void

    D.The class' default constructor will be used instead of the one you're declaring
    E.None of the above

    • 原因,理解情况:
    • A不会出现错误,将变为普通方法,即不再是构造函数B系统将使用默认构造函数C不会出现错误,除非有自己的编写错误,不再是构造函数。理解:构造函数不能有返回值类型,;类将会使用默认构造函数。
    • 错题4

    During program development, software requirements specify--what the task is that the program must perform

    • 原因,理解情况:
    • 软件需求指定了程序必须完成的功能,指明了程序应当执行的任务,而不是描述如何执行所规定的任务
    • 错题5

    Static methods cannot--reference non-static instance data

    • 原因,理解情况:
    • 未理解引用(reference)和调用(invoke),引用主要指地址的引用,调用则是指方法的调用
    • 错题6

    In a UML diagram for a class

    • 原因,理解情况:
    • UML类图包括类名,属性(数据),操作(方法),以及箭头
    • 错题7

    All Java classes must contain a main method which is the first method executed when the Java class is called upon.

    • 原因,理解情况:
    • 只有驱动程序需要一个主方法,而对于类,第一个为构造函数,其他的叫做方法
    • 错题8

    Java methods can return more than one item if they are modified with the reserved word continue, as in public continue int foo( ) { ... }

    • 原因,理解情况
    • 无论一个方法中有几个变量,其返回值只能有一个
    • 错题9

    A method defined in a class can access the class' instance data without needing to pass them as parameters or declare them as local variables.

    • 原因,理解情况:
    • 实例数据是公开的,任何方法均可访问它
    • 错题10

    Every class definition must include a constructor.

    • 原因,理解情况:
    • 构造函数可以没有,因为系统会自动构造一个默认的构造函数
    • 错题11

    In order to create a constant, you would use which of the following Java reserved words?

    • 原因,理解情况:
    • final 保留符用来创建常量
    • 错题12

    An object that refers to part of itself within its own methods can use which of the following reserved words to denote this relationship?

    • 原因,理解情况:
    • 如果出现两个变量同名,可以使用this来进行区分,来定义局部变量
    • 错题13

    An object that refers to part of itself within its own methods can use which of the following reserved words to denote this relationship?

    • 原因,理解情况:
    • 上面的问题也已提到,为了实现比较,需要实现compareTo方法

    单词总结:

    encapsulation(封装) syntax error(语法错误)
    compile(编译) invoke(调用) instance(实例的)
    denote(指示)

    其他

    • 本周难度较上周较为减轻,但是循环语句的逻辑性较强,需要仔细思考,同时,在循环嵌套时,格式一定要规范,否则一旦出现问题,就会极难的排查。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 110/200 1/1 20/20
    第二周 425/500 2/2 18/38
    第三周 900/1000 4/4 22/60
    第四周 1500/1300 5/5 30/90
    第五周 2715/3000 6/6 20/110

    参考资料

    String类中的compareTo方法总结
    解读switch语句中的break

  • 相关阅读:
    使用PaintCode便捷地实现动画效果
    程序员常用markdown语法记忆小结之博客园markdown编辑器的效果
    kafka-重复消费-1
    nosql
    ThreadLocal
    内存溢出、内存泄漏
    springboot邮件服务
    三次握手、四次挥手
    悲观锁乐观锁简单整理
    beanstalkd
  • 原文地址:https://www.cnblogs.com/326477465-a/p/8778724.html
Copyright © 2011-2022 走看看