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

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

教材学习内容总结

  • 第四章
  1. 类与对象的关系,类是对象的蓝图。
  2. UML类图的使用
  3. 封装的有关概念。(可见性修饰符:public private protected)
  4. return语句。
  5. 形参和实参
  6. 局部数据和实例数据
  • 第七章
  1. 软件开发的步骤(确定软件需求,软件设计,实现软件设计,软件测试)
  2. 静态变量和静态方法
  3. 类间关系(依赖关系,聚合关系...)
  4. this的用法。常在构造方法中出现。
  5. 接口(Comparable接口,Iterator接口)
  6. 枚举类型
  7. 有关方法设计

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

  • 问题1:书P111 return语句 中第一句话提到了:

    在方法中声明首部中指定的返回值类型可以是基本数据类型、类名或保留字void。

    我们经常在Java中输入public static void main(String[] args),那么这个void和return能否一起使用,亦或他们的区别在哪里。

  • 问题1解决方案:于是我首先从书上了解到,方法的返回值类型必须与方法声明首部的中规定的返回值类型一致。
    然后,我百度了返回值,参考了资料:Java中返回参数值的几种状态
    那么,我们可以简单划分为几类:
  1. Java中无参无返回值方法
  2. Java 中无参带返回值方法
  3. Java 中带参无返回值方法
  4. Java 中带参带返回值方法

我们书上经常使用的是无参带返回值方法和带参带返回值方法。这时候,我们对于return语句的运用和有无返回值能有更系统的理解,便于后面代码的编写。

  • 问题2:实参和形参的理解。
  • 问题2解决方案:什么是形式参数?什么是实际参数?两者之间值如何传送?一切尽在:形参和实参的区别

书上说:

调用方法时,每个实参的值被复制后保存到相应的形参中。

就是说

形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。并且,这个传送是单向的。

通俗的说

形参就是函数定义时参数表的各个变量,而实参就是调用函数时给函数的变量(写在函数名后的圆括号里)。

  • 问题3:什么是伪代码?
    在课上老师讲解了代码大致分为3种。
    1.伪代码
    2.产品代码
    3.测试代码
  • 问题3解决办法:产品代码和测试代码我都了解,就是平常程序中的类文件和测试文件。那么这个伪代码是什么呢?假代码吗?并不。
    什么叫伪代码?
    那么我们可以了解到,伪代码多用于软件设计阶段,是一种简单的计算机语言。
    例:

    if num>0 正整数
    if num<0 负整数
    else num=0

  • 问题4:Java类间关系。依赖关系和聚合关系的区别。
    如果说,聚合关系就像汽车和轮胎、引擎一样,那么聚合关系之间不也是存在依赖关系么?换言之,聚合关键就是“有”的关系。那么如何辨别依赖关系和聚合关系。
  • 问题4解决方案:java--依赖、关联、聚合和组合之间区别的理解

依赖关系:

就像是一个人(Person)要买车(Car)买房(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car 和 House。但是,Person类里并没有Car和House类型的属性,Car 和House的实例是以参量的方式传入到buy()方法中去的。

聚合关系:

更多体现在两个类是处在不平等层次上的,一个代表整体,另一个代表部分。 是整体与个体之间的关系。

  • 我觉得现在应该好区分很多了。
  • 问题5:Java中的接口有什么用?
  • 问题5解决方案: 我觉得大部分人一开始都有这个疑问吧,什么接口?直接编写在类中多方便。所以我觉得,接口实际上就是一种类似“规范”。所以,我从网上查阅了别人的理解和看法。
    Java 中的接口有什么作用?
    java 接口的作用和好处
    首先,接口确实是一种规范,统一标准。

    接口就是个招牌。
    比如说你今年放假出去杭州旅游,玩了一上午,你也有点饿了,突然看到前面有个店子,上面挂着KFC,然后你就知道今天中饭有着落了。KFC就是接口,我们看到了这个接口,就知道这个店会卖炸鸡腿(实现接口)。那么为神马我们要去定义一个接口涅,这个店可以直接卖炸鸡腿啊(直接写实现方法),是的,这个店可以直接卖炸鸡腿,但没有挂KFC的招牌,我们就不能直接简单粗暴的冲进去叫服务员给两个炸鸡腿了。要么,我们就要进去问,你这里卖不卖炸鸡腿啊,卖不卖汉堡啊,卖不卖圣代啊(这就是反射)。很显然,这样一家家的问实在是非常麻烦(反射性能很差)。要么,我们就要记住,中山路108号卖炸鸡,黄山路45号卖炸鸡(硬编码),很显然这样我们要记住的很多很多东西(代码量剧增),而且,如果有新的店卖炸鸡腿,我们也不可能知道(不利于扩展)。

         反正,我的理解就是接口就是方便调用一个方法。更加的系统化。
  • 问题6:是否所有类都需要重写toString方法。
  • 问题6解决方案:在编写bulb类的时候呢,我输出了一段乱码。经过了解,因为我没有重写toString。那么什么时候应该重写toString,toString是否是必须重写的呢?
    学长给了我指引:

    你的对象没有重写这个方法的时候调用会输出地址!你的对象需要被打印或者需以某种方式转换为字符串时就需要重写方法!因为你很多时候都会去做一个转换或者打印的操作所以最好重写一下。

           我们再看一个例子:[每个Java类都有的toString方法](https://blog.csdn.net/rocky1996/article/details/61414011)
           那么,我们以后最好不要偷懒想不打toString了 - _- 

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

  • 问题1:不能编译
    刚开始学第四章,照旧把代码打上,然后编译,然后运行,然后git...
    然而

              很多同学都跟我有过一样的错误,我想明白是因为自己编译的类虚拟机不能识别。那么怎么解决呢,我就把方法和测试代码放在个Java文件中,可是还是不行。
  • 问题1解决方案:怎么解决。学长给出了两种答案。
  • 第一,同时编译类和测试程序。 例:javac -d bin src/chap4/*
  • 第二,把类编译到当前文件夹下。
    后来,我仔细想想就豁然开朗了。
    书P107:

    例如:Die类保存在Die.java中。

    真的需要仔细认真看书!

  • 问题2:Bulb类输出乱码。@665689
    一输出看了这是啥啊,怎么还有@,乱七八糟。
  • 问题2解决方案:百度到了结果,这个就是内存地址。内存地址?!
    更懵了,我输出一个代码怎么还会输出内存地址
    最后,问了学长才知道是toString的问题。
    只要重写一下toString的方法就可以了。
    所以我这时候,很认真思考了下toString的方法。
    因为我在之后又在toSring上又发生了错误。
    如图:

                 这个是因为没有装箱,转换类型发生了错误。
                 所以我用了这个方法。
public String toString()
{
String b = Integer.toString(a);
return b;
}    
  • 问题3:对例7.4代码理解问题。
    首先,构造方法时,为什么要乘-1?
    然后,result = numerator + ""; ""这个输出的是空??
  • 问题3的解决方法:
  • 我对第一个问题的解决办法就是实验。
    我考虑到-1肯定和负数有关,如果我输入的是负数,那有什么结果。当然,程序肯定是不会崩溃的。那么我只要根据有无乘-1的方法进行计算即可。不得不说,我真会给自己找事情,这无疑是一个庞大的工作量。
    结果如图:
  • 第二个问题百思不得其解,所以问了老师。
    其实很简单。
    numerator什么数据类型?
    int型啊!
    result呢?
    String型啊!
    int型能直接转换String型吗?
    不能啊!
    所以呢,这不就懂了么,只是转换类型的。

代码托管


上周考试错题总结

  • 点算符的函数是什么? E
    A.它可以将整数部分与浮点数的小数部分分开。
    B.它允许在给定对象的引用时访问对象中的数据。
    C.当给定对象的引用时,它允许在对象中调用方法。
    D.它被用来终止命令(很多时候用英语来结束一个句子)
    E.B和C都是正确的。
    理解:浮点数内的点应该是一个小数点,而不是点算符。 所以A显然是错的
  • 如果两个变量包含同一对象的别名。 E
    A.对象可以使用别名进行修改。
    B.除非有单独的引用,否则不能修改对象。
    C.如果对象被修改,则创建第三个别名。
    D.如果两个变量都设置为null,对象将变成一个“孤儿”。
    E.案A和D是正确的。
    理解:书P75指出:

    当一个对象所有的引用都丢失(可能是由于重赋值)后,它就再也不能为程序所用,即程序中不能再引用该对象的方法或使用它的变量。

         对象成为“垃圾”以后,将会被回收。
  • 字符串对象的属性是什么? E
    A。他们的长度永远不会改变
    B。最短的弦是零长度。
    C。可以使用replace方法更改字符串中的单个字符。
    D。字符串中第一个字符的索引是1。
    E。只有A和B是真的。
    理解:字符串是不可变的。这意味着一旦创建了字符串对象,就不能更改它。我们不可以改变字符串,只能去创建新的字符串。
  • 如果在初始化之前尝试使用变量,会发生什么情况? E
    A。语法错误可以由编译器生成。
    B。执行期间可能出现运行时错误。
    C。“垃圾”或“未初始化”值将用于计算。
    D。如果变量未初始化,则使用0值。
    E。答案A和B是正确的。
    理解:

    很多时候,编译器能够检测到未初始化变量的尝试使用,在这种情况下会产生语法错误。如果在编译器中使用脱逃检测,那么在使用时就会出现运行时错误。

      所以语法错误和运行时错误都会出现。不过话说脱逃检测是啥。
      在网上查查呗,没有?!那就是有道翻译错了,应该是可以编译,却不能运行。不过,我在搜索的时候竟然查到了同学的博客园,他用的也是脱逃检测。-_-
  • 假设您编写了一个程序,该程序使用了Random类,但是您没有包含java.util的import语句。随机(或java.util.*)。当您尝试编译和运行您的程序时会发生什么。 B
    A。该程序不会运行,但它会对丢失的类进行警告。
    B。该程序不会编译—您将会收到关于缺失类的语法错误。
    C。该程序将编译,但您将收到关于丢失的类的警告。
    D。当程序试图访问随机类的任何成员时,会遇到运行时错误。
    E。以上都不是
    理解:这道题我错选了A,后来想想自己实践时,难道他会对丢失的类进行警告?! 不会吧,只是语法错误而已。
  • 考虑以下两行代码。关于s1和s2,你能说些什么? C
    字符串s1 = "testing" + "123";
    字符串s2 = new String(“testing 123”);
    A。s1和s2都是对同一个字符串对象的引用。
    B。声明s2的行是合法的Java;声明s1的行将产生语法错误。
    C。s1和s2都是对不同字符串对象的引用。
    D。s1和s2会比较“相等”
    E。以上都不是

理解:我能说些什么? 真的学计算机需要细心,一个空格,失之毫厘差之千里!

  • 这两种设置字符串的方式产生了相同的结果: B
    a) String string = "12345"
    b) String string = 12345;
    A . true
    B . false
    理解:第二个语句不能编译,存在关于不兼容类型的语法错误。从一个数字到一个字符串没有自动转换。而正确的应该这样。
a) String string = new String("12345");
b) String string = "" + 12345;  

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 122/122 1/1 20/20
第二周 487/609 1/2 18/38
第三周 482/1091 1/3 22/60
第四周 1357/2448 1/4 20/80

这周任务很重,同样也很充实。有时候学到夜里一点多,觉得java确实很苦,不过,任重道远。我们应该坚持下去。

参考资料

原文地址:https://www.cnblogs.com/gk0625/p/8719545.html

时间: 2024-08-08 18:04:41

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

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

20172301 <程序设计与数据结构>第一周学习总结 教材学习总结 第一章 软件的质量特征 正确性:软件能否有效处理问题 可靠性:软件发生故障的频率 健壮性:软件修复错误以及bug出现的频率 可用性:软件处理问题效率 可维护性:代码的整洁规范是否有利于维护 可重用性:使用已有的组件来减少开发工作量 可移植性:能在不同开发环境下能顺利运行 运行效率:提高软件运行效率,优化CPU时间和内存 数据结构 数据结构是计算机存储.组织数据的方式. 算法效率 算法效率是指算法执行的时间,算法执行时间需通过

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

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

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

20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合可以分为两大类线性集合和非线性集合 线性集合:其元素按直线方式组织的集合. 非线性集合:其元素按某种非直线方式组织的集合.例如按层次结构或按网状结构. 3.1.1抽象数据类型 集合十一找给你隐藏了实现细节的抽象 数据类型:一组值及作用于这些数值上的各种操作. 抽象数据:类型(Absttract Data Ty

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

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

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