20172310 2017-2018-2 《程序设计与数据结构》第三周学习总结
20172310 2017-2018-2 《程序设计与数据结构》第三周学习总结
教材学习内容总结
- 第三章主要是学习了一下对象的创建和Java标准类库中的一些类。
- new运算符返回对新创建对象的引用,但是当类中的方法是静态方法是,可以直接类名称调用它们。
- 编写Java程序时,除了java.lang包中的将自动转化成可用类,其他包都需要用import声明。
- 本章还学习了String类、Random类、Math类、格式化输出信息的方法和枚举类型包装器和自动装箱的概念。
- 不得不说每章的信息量越来越多,想要学好Java还需要很多的努力。
教材学习中的问题和解决过程
-
问题1:在看课本枚举型之一小节的时候没怎么理解的,课本上说枚举型是一种特殊的类。
-
问题1解决方案:反复看了课本和给的例子中,发现枚举型用 enum 来声明一个枚举型变量,这个枚举型变量可以有无限个的枚举值,
然后可以用这个枚举类型来声明一个枚举变量(只可以取枚举值中的一个)。此外,这个类并不是像其他类一样定义在方法中,而在
类级层次上。 -
问题2:在学习这章的内容时,接触到了很多新的类及其方法,所以不太熟练
-
问题2解决方案:既然学的东西比较多,就要去从中寻找规律。其实大部分类的使用方式是差不多的,只是每个类各自的方法。这些是不可能全都记下来的,所以认识到了API文档的重要性。不熟练就要去练习,所以要更多的敲代码。
代码调试中的问题和解决过程
-
问题1:
-
问题1解决方案:当使用格式化输出NumberFormat类中getCurrencyInstance方法时,显示出来的是“¥”,而不是“$”。
所以有些疑惑,当看到SR3.26这个自测题时,就明白了:当初设置虚拟机时所选的地区是中国,所以它会转化为当地的货币符号。 -
问题2:
-
问题2解决方案:课本后面的参考答案给出了
NumberFormat fmt = NumberFormat.getPercentageInstance();
这样一串代码,可编译时计算机给出了错误信息,学长教我使用了一下API文档,发现根本就没有这个方法,所以自己会找方法是很重要的。
代码托管
上周考试错题总结
-
错题1:
Which of the following is true regarding the mod operator, %? (关于求余运算符%,下面哪项是正确的?)
A .It can only be performed on int values and its result is a double (它只能执行int类型的数值,其结果是double类型的数)
B .It can only be performed on int values and its result is an int (它只能执行int类型的数值,其结果也是int类型的数)
C .It can only be performed on float or double values and its result is an int (它只能执行float或者double类型的数值,其结果是int类型的数)
D .It can only be performed on float or double values and its result is a double (它只能执行float或者double类型的数值,其结果是double类型的数)
E .It can be performed on any numeric values, and the result always is numeric (它可以执行任何类型的数值,其结果始终是数值)
正确答案: E 我的答案: B
错因:没有理解求余运算。
解析:求余运算其实可以执行任何类型的数值,结果也是数值,但大多数情况我们用整型值来执行求余运算。 -
错题2:
What is output with the statement System.out.println(x+y); if x and y are int values where x=10 and y=5? (如果x和y是int类型的数值,x=10,y=5,那么语句System.out.println(x+y);的输出是什么?)
A .15
B .105
C .10 5
D .x+y
E .An error since neither x nor y is a String (因x和y都不是字符串而引起的一个错误)
正确答案: A 你的答案: B
解析:尝试了一下,确实是15,并不是我想的那样要"( (x + y) )"这样的格式。 -
错题3:
If you want to store into the String name the value "George Bush", you would do which statement? (如果你想把"George Bush"这个值存储为字符串类型的名字,你会执行那条语句?)
A .String name = "George Bush";
B .String name = new String("George Bush");
C .String name = "George" + " " + "Bush";
D .String name = new String("George" + " " + "Bush");
E .Any of the above would work (上述都可以完成)
正确答案: E 你的答案: B
错因:在答题的时候还没有学习第三章
解析:其实这四种表达方式都是可以的。但是我们通常会选择A这种简化的语法。 -
错题4:
A double is wider than a float and a float is wider than an int. (一个double类型的数比float类型的数更宽泛,一个float类型的数比一个int类型的数更宽泛。)
A .true
B .false
正确答案: A 你的答案: B
解析:更广泛的类型是更大,也可以存储更大的值的范围。double是64位的,float是32位的,int也是32位的,但是float的存储方式,它存储的数比int数更广泛。 -
错题5:
A variable of type boolean will store either a 0 or a 1. (Boolean类型的变量将被存储为0或1)
A .true
B .false
正确答案: B 你的答案: A
错因:想当然将0、1认为是true和false
解析:布尔型变量只包含两个有效值:true和false,并不是用0、1来分别代表。 -
错题6:
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. (你不能将字符串强制转换为char类型,也不能将一个字符串强制转换为int、float或double类型。)
A .true
B .false
正确答案: A 你的答案: B
错因:没有弄清字符串和基本数据类型的区别
解析:字符串和基本数据类型是两个不一样的概念。字符串不能被强行转换为基本数据类型。
其他
在经过这一周的学习之后,在回顾当初的错题,发现当初的错误都挺简单的。这一发现让我看到学习果然使是我不断的进步,知识也在一点点的积累。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 127/127 | 1/1 | 25/25 | |
第二周 | 278/405 | 1/2 | 20/45 | |
第三周 | 442/847 | 1/3 | 20/65 |