20182322 2019-2020-1 《数据结构与面向对象程序设计》第2-3周学习总结
教材学习内容总结
-
第二章中首先学习了字符串的使用,以及定义、赋值、使用各种数据类型的变量,最后学习使用Scanner类提供的不同方法输入数据。
-
第三章中着重介绍了对象,对象是用来提供各种引用对象的方法,这些介绍加深了我对对象的理解。以及介绍了Sring类的方法,可以对字符进行检索、判断和加工,是非常实用的一种。还有包,包包含着类,除了java.lang中的类,其他的类都需要import声明来引用和指定。以及Random类,主要用于取随机数;Math类,一些数学计算公式应用;格式化输出。最后就是枚举值,被认为是一种安全类型,保证编译时无法使用无效的值。
教材学习中的问题和解决过程
- 问题1:在学习Math类时,我对于它的很多条方法很蒙圈,因为也看不懂,所以也记不住。不光是Math类,其实学的这些,自己大致都是可以用的,但是就是还记不住,可能是英语不好的缘故。
- 问题1解决方案:对于这个问题,没什么好办法,慢慢记吧,而且,在照书编写的时候,才知道,原来在Math 类中Math.PI表示的是数学中的π。
- 问题2:什么是类方法或静态方法?
- 问题2解决方案:一个类的方法即静态方法可以通过定义该方法的类名调用,如Math.abs。如果方法不是静态的,则只能通过一个实例调用。
- 问题3:输入转义字符时\呈红色,出现错误。
- 问题3解决方法:通过对比例题,仔细观察,发现转义字符只有在双引号之中才能起到作用。
- 问题4:方法声明首部的形参名,是创建的局部变量吗?为什么重复命名的也可以用?
- 问题4解决方法:形参是仅当方法调用时才会存在的,在方法调用结束时消亡。
代码调试中的问题和解决过程
-
问题1:
-
问题1解决方案:在格式化的时候将.打成,导致程序错误,将符号修改程序正常运行
-
问题2:
-
问题2解决方案:用 Scanner 实现字符串的输入有两种方法,一种是next(),一种nextLine();
-
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
-
nextLine()方法的结束符只是Enter键。
-
问题3:
-
问题3解决方案:低级错误,在输入时绝少一个,和:导致编译错误,重新修改编译正确
-
问题4:使用Scanner类输入数据时发生错误,提示InputMismatchException
-
问题4解决方案:输入类型与方法不匹配,将输入语句修改成与变量类型对应就可以了。
[代码托管]
上周考试错题总结
- 第二次测试
- If you want to output the text "hi there", including the quote marks, which of the following could do that?解析:\’’是用于在字符串中放置引号的转义序列,因此在此处用于与字符串的其余部分一起输出引号。
- Assume that x, y, and z are all integers (int) equal to 50, 20, and 6 respectively. What is the result of x / y / z?解析:该划分从左到右执行,因此首先执行50/20。由于50和20是整数,因此得出2。接下来,将执行2/6,即0。如果除法是从右向左进行的,则求值应为50 /(20/6)= 50/3 = 16。
- Java is a strongly typed language. What is meant by "strongly typed"? 解析:强类型是编程语言的一种属性,由此变量的类型在变量存在期间不会改变,并且存储在该变量中的任何值都属于该类型。强类型很重要的原因是,它确保成功编译的程序不会有与声明的变量的类型滥用相关的运行时错误。
- You cannot cast a String to be a char and you cannot cast a String which stores a number to be an int, float or double.解析:没有机制可以将String强制转换为基本类型之一,但是有一些方法可以执行类似的操作,并在给定位置(charAt)返回一个字符,或者返回等效于int,float或double值的方法。
- Assume that count is 0, total is 20 and max is 1. The following statement will do which of the following? if (count != 0 && total / count > max) max = total / count;解析:由于count为0,因此(count!= 0)为假。由于&&条件的左侧为false,因此该条件短路,因此不会评估右侧。
- If a break occurs within the innermost loop of a nested loop that is three levels deep。解析:最里面的循环被破坏,并且从for循环结束后开始继续执行。
- Every Interator。解析:对课本知识点不熟。
- In Java, selection statements consist of the if and if-else statements.解析:还有switch语句。
- The statement if (a >= b) a++; else b--; will do the same thing as the statement if (a < b) b--; else a++;解析:我们可以反转if子句和else子句。(a> = b)的相反条件是(a <b),因此这在逻辑上是可行的。如果使用条件(a <= b),那么如果a == b,则结果语句将不会执行与原始语句相同的操作。
- In order to compare int, float and double variables, you can use <, >, , !=, <=, >=, but to compare char and String variables, you must use compareTo( ), equals( ) and equalsIgnoreCase( ).解析:可以使用<,>,,!=,<=,> =直接比较char变量。
- 第3次测试
- In Java a variable may contain 解析:Java变量包含值或对类实例的引用(包含值和/或其他引用)。
- If two variables contain aliases of the same object then 解析:根据定义,别名提供了一种可以修改对象的方式(别名就像指针)。如果两个变量都设置为null,则该对象不会被任何变量引用,并且确实会成为“孤立对象”,并且将来会在某个时间点对其进行垃圾回收。
- Say you write a program that makes use of the Random class, but you fail to include an import statement for java.util.Random (or java.util.*). What will happen when you attempt to compile and run your program.解析:缺少的类意味着将有未定义的变量和/或方法。编译器将检测到这些错误并发出错误消息。程序将无法执行。
- Consider the following two lines of code. What can you say about s1 and s2?String s2 = new String(“ testing 123”)解析:这两个声明都是合法的Java。s1是一个字符串引用,它被初始化为字符串“ testing123”。s2是一个字符串引用,它被初始化为字符串“ testing 123”。“测试”和“ 123”之间有空格。因此,两个字符串不相等。
- The String class' compareTo method 解析:如果两个字符串相同,则compareTo产生0;如果第一个字符串按词法出现在第二个字符串之前,则返回-1;如果第一个字符串按词法出现在第二个字符串之后,则返回+1。对知识点不熟。
- An API is 解析:课本上知识点。
- Java.text's NumberFormat class includes methods that 解析:NumberFormat总是四舍五入;它永远不会截断。而且提供了货币和百分比的方法。对课本不熟
- In Java, the symbol "=" and the symbol "==" are used synonymously (interchangeably).解析:“ =”用于赋值语句,而“ ==”用于测试条件语句中的相等性。
- If you need to import not only the top-level of a package, but all its secondary levels as well, you should write: import package. * . * ;解析:import语句只能与单个 (通配符)一起使用。如果还需要导入程序包的所有辅助级别,则必须明确地写出它们:import package.A.*;。
- The names of the wrapper classes are just the names of the primitive data types, but with an initial capital letter.解析:对于大多数包装器类而言,这都是正确的,但对于int(Integer)和char(Character),则为false。
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
- 博客中值得学习的或问题:
- 图片排列整齐
- 问题深入思考,能自己动手解决
- 代码中值得学习的或问题:
- 提交很精细
- 代码有自己独特的方法
- 基于评分标准,我给本博客打分:12分。得分情况如下:
- 正确使用Markdown语法(加1分):
- 模板中的要素齐全(加1分)
- 教材学习中的问题和解决过程, 加4分
- 代码调试中的问题和解决过程, 加4分
- 其他加分,加2分
- 进度条中记录学习时间与改进情况的加1分
点评过的同学博客和代码
- 本周结对学习情况
- 上周博客互评情况
其他(感悟、思考等,可选)
- 作业量越来越多,需要花更多的时间去学习。而且老师的进度越来越快,需要自己课下自学。
- 多动手敲代码,才能更快掌握知识点。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 59/200 | 2/2 | 20/20 | |
第三周 | 292/331 | 4/4 | 40/40 |
-
计划学习时间:50小时
-
实际学习时间:40小时