20172332 2017-2018-2 《程序设计与数据结构》第四周学习总结
教材学习内容总结
学长所说的最难的编写类第四章终于到来了!!!
- 1.进一步了解类与对象(类、属性、操作)。简单点理解就是好多个对象组成了一个类。
- 2.对于编写类的分析。(实例数据、封装、可见性修饰符、访问器和修改器)。
- 3.用来描述类的结构及类间的关系:UML类图。
- 4.方法的分析。(return语句、参数、局部数据、构造方法)。
跳跃式开始第七章的内容(本章中有些许知识还没有学到,其中遇到的问题在以后的博客中会展现。)
- 5.软件开发的四个过程。
- 6.明确类和对象(对象的类命名一般是名词,类的行为一般是动词。)
- 7.静态变量和静态方法。(方法内的局部变量不能声明为static,静态变量可以由所有的类实例共享;静态方法可以通过类名称来调用,不必实例化类的对象。)
- 8.类间关系(这章主要讲了依赖关系和聚合关系。)
- 9.经常使用在构造方法中的this语句。
- 10.包含常量和抽象方法的接口(Comparable接口和Iterator接口)。
- 11.枚举类型。(迭代器,for语句都在下周会学习。)
- 12.方法设计(伪代码),方法分解(儿童黑话),方法参数的传递方式,方法重载。
- 13.测试(审查、缺陷测试(黑盒测试和白盒测试))。
教材学习中的问题和解决过程
问题1:下列代码中private是干嘛用的
- 问题1解决方案:附录D中总结了所有的修饰符,private为修饰符,仅应用于内部类,仅在外围类中可见,只有内部类才具有private可见性,只能从类的内部访问,不能从外部访问,提高了类的封装性。实例数据定义为private。
- 问题2:静态变量和实例变量的区别
- 问题2解决方案:实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。就跟静态方法可以直接通过类名调用类似。
- 问题3:==和=的区别
- 问题3解决方案:==是相等性运算符,判断前后两个值是否相等,相等返回true,不相等返回false;=是赋值运算符,=左边必须是变量。
- 问题4:if等语句的运用
- 问题4解决方案:此为第五章内容,下周学习后问题会在当周博客中展现。
- 问题5:为什么例7.3中
System.out.println("First rational number:"+r1);
输出的是引用了toString方法的结果。 - 问题5解决方案:
System.out.println
语句中自动调用toString方法,不需要引用。 - 问题6:类和接口有什么区别
- 问题6解决方案:类可以被实例化,而接口不能。
- 问题7:如果构造方法的语句中加入void会是什么结果
- 问题7解决方案:加入后该构造方法将成为一个新的方法,如果运行时使用构造方法,将会使用系统默认的构造方法而不是使用由自定义的构造方法改变后的新方法。
- 问题8:例7.16中
return value + "";
为什么用"" 问题8解决方案:因为返回值的类型是String型,""把int型的value转换成了String型。
代码调试中的问题和解决过程
问题1:编写了新类并且编译成功了。但是使用新类的程序不能编译成功
- 问题1解决方案:要把新类和编写好的程序一起运行
javac -d bin/第四周 src/第四周/*.java
就可以把src/第四周这个文件夹里的所有.java程序一起编译到bin/第四周文件夹中。也可以用javac -d bin/第四周 -cp bin/第四周 src/第四周/RollingDice.java
问题2:
问题2解决方案:
返回语句中的变量类型和开始创建方法时定义的变量类型必须一致。不一致,需要转化类型,这里用上了之前所学的变量类型,尤其是布尔型。当时学的时候并没有用到,其实不是很理解,这次通过查阅资料,才对布尔型的用法更加深入,布尔型只能用赋值语句。像本题的判断对错,就把一个不等式赋给它,如果结果是对的,就会是ture;如果结果不对,则会是false。
问题3:
- 问题3解决方案:实际参数为字符串时,应用引号“”括起来。
- 问题4:
此处不允许使用 ‘空‘ 类型
- 问题4解决方案:简单来说就是使用的那个方法没有返回值,所以输出时输出不出东西,所以编译会出错。所以要想输出东西,需要的方法是有返回值的。
问题5:
- 问题5解决方案:当想实现一个方法中两个变量的不同赋值操作就不用返回值,直接返回值设为void就行了,然后在设置访问器的方法读取不同的数据。
- 问题6:pp7.4中所说的浮点数等价值是什么
- 问题6解决方案:就是比较两个数的大小。
- 问题7:无法取消引用double
- 问题7解决方案:compareTo的方式是对象的方法,而我直接用的是基本数据类型,需要用包装器类。
问题8:
问题8解决方案:这是一个固定的用法,要不就是用不了,把object那个对象变成了RationalNumber类的对象
代码托管
)
上周考试错题总结
1.in Java a variable may contain
A . a value or a reference
B . a package
C . a method
D . a class
E . any of the above
- 答案:A. 我选的:E.
- 分析:java变量包含一个值或者参数。
- 单词:1.reference(引用)
2.Which properties are true of String objects?
A . Their lengths never change
B . The shortest string has zero length
C . Individual characters within a String may be changed using the replace method
D . The index of the first character in a string is one
E . Only A and B are true
- 答案:E. 我选的:C.
- 分析:C替换方法允许从原来的字符串中创建一个新字符串,替换一些字符。
- 单词:1.properties(性质)2.individual(单个)3.characters(字符)4.index(索引)。
3.What happens if you attempt to use a variable before it has been initialized?
A . A syntax error may be generated by the compiler
B . A runtime error may occur during execution
C . A "garbage" or "uninitialized" value will be used in the computation
D . A value of zero is used if a variable has not been initialized
E . Answers A and B are correct
- 答案:E. 我选的:A.
- 分析:编译错误肯定运行也错误。
- 单词:1.initialized(初始化)2.syntax error(语法错误)3.execution(运行)4.compiler(编译程序)5.** generated**(生成)
4.An "alias" is when
A . two different reference variables refer to the same physical object
B . two different numeric variables refer to the same physical object
C . two different numeric variables contain identical values
D . two variables have the same names
E . none of the above
- 答案:A. 我选的:E.
- 分析:“别名”,就是多个引用指向同一物理对象。(相当于一个东西有多个名字,这里的东西就是对象)
- 单词:1.alias(别名)2.numeric(数值)3.identical(相同的)
5.The String class‘ compareTo method
A . compares two string in a case-independent manner
B . yields true or false
C . yields 0 if the two strings are identical
D . returns 1 if the first string comes lexically before the second string
E . none of the above
- 答案:C. 我选的:A.
- 分析:compareTo是一个方法名,当时考试的时候百度翻译把它也给翻译了,就没看懂=。=。该方法返回一个正型值,正值、0、负值分别表示本对象的字符串按字典顺序位置后于、等于、先于str对象的字符串。
- 单词:1.lexically(词法上)
6.The advantages of the DecimalFormat class compared with the NumberFormat class include
A . precise control over the number of digits to be displayed
B . control over the presence of a leading zero
C . the ability to truncate values rather than to round them
D . the ability to display a % automatically at the beginning of the display
E . only A and B
- 答案:E. 我选的:C.
- 分析:精确控制要显示的数字和控制前导零的存在是DecimalFormat类的优点。
- 单词:1.digits(数字)2.truncate(截断,缩短)
7.The printf method within System.out is designed to ease the conversion of legacy C code into Java.
A . true
B . false
- 答案:A. 我选的:B.
- 分析:C程序使用C的printf函数输出。java中的printf方法建模后与C printf函数关系密切,所以C输出语句可以翻译成java。
- 单词:1.legacy(遗产,遗赠)2.ease(轻松)
其他(感悟、思考等,可选)
首先必须!不得不说的就是!对于截图的排版,我觉得这次可能是之前写过的博客中最整齐的一次!(T T我真的尽力了。)然后就是感觉现在的知识难度等级一下子跳了好几个阶梯,跟之前完全不是一个水平!第四章的pp做起来没有前几章那么轻松,但是做多了,还是能摸索出套路的,在把所有的pp做完之后,对编写类的感觉没有刚开始觉得那么难了,虽然还是会有一些小细节还不能确定,但是在以后的学习中,我相信能够解决这些问题。
虽然这是例题,但这是我目前为止打过的最多代码的程序!(专门显示了行数)沉浸于输入它的快感之中,以至于把发烧的痛苦都忘记了(/ω\)。虽然以后会打出包含更多代码的程序,但是还是想要记录一下这个第一次!很有成就感,感觉很激动很开心啊。
第七章的例题在学完第五章和第六章后会再深入研究,另外第七章的pp也会在学完第五章和第六章后一起做完。第七章的内容学的是云里雾里的,希望学完第五章和第六章能够不要再对第七章的内容迷茫了(〒︿〒)pp7.4做的是真的费劲!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 182/182 | 1/1 | 10/10 | |
第二周 | 458/640 | 1/2 | 15/25 | |
第三周 | 469/1109 | 2/4 | 18/43 | 学会IDEA的使用和调试,学会jdb调试。 |
第四周 | 1536/2645 | 1/5 | 24/67 |
计划学习时间:20小时
实际学习时间:24小时
改进情况:因为本周内容的难度跨越了好几个等级,所以花费了更多的时间去学习,计划学习时间下周开始要增加了!