20172328李馨雨《程序设计与数据结构》第三周学习总结
教材学习内容总结
- 1.学习使用new运算符创建对象(即实例化),了解null空引用。具体体悟 :类和对象的关系。
- 2.对象引用变量的声明和初始化。用"."来引用方法,而且须要保留()。
- 3.了解String类的一些基本方法和标准类库java API。
- 4.除了在java.lang中的变量无需import声明,其余都须要import声明(简化类的屡次引用)。
- 5.了解和使用Random类和Math类。
- 6.理解格式化输出中NumberFormat类和DecimalFormat类和printf方法。
- 7.特殊的枚举型数据类型,枚举型是一种特殊的类,枚举型变量是对象变量。(这点特殊在编译代码时让我发现编译好的class文件名中多了
$变量名
)。
教材学习中的问题和解决过程
- 问题1:什么是空引用?
1.(〃'▽'〃)本题解答:当时的回答是“一个对象中全部的引用都丢失了”,后来发现本身混淆了别名和空引用两个概念。
先来说我当时最迷糊的一个概念:对象变量保存的不是数值,而是地址。赋值语句其实是复制地址。这时就能够来说讲别名了。
别名:就是两个名称不相同的变量,其所包含引用的地址都是相同的,这是它们两个就成了别名,当一个对象的全部引用都丢失后,就再不能为程序所用,也就是永久丢失。
空引用:html
能够将一个对象变量设置为null,null是java的保留字,专门用于表示该变量不指向任何对象。java
在Java中,对象每每包含属性、方法及一个存储空间,若一个对象的属性和方法是空的则可认为这是一个空对象。一个空对象也是对象,一样经过对象名引用方法或属性,但和通常对象有点不一样。(本篇博客最后有连接,比较详细)
- 问题2:类和包究竟有什么关系?public类具体是修饰什么的,为何当其存在时文件名与其所修饰的类要相同?
- 2.(〃'▽'〃)本题解答:
刚开始真的真的很不理解。去查阅了一下,得以下结果。
java包是一个相关类的集合。包至关于模块,类至关于模块下各个功能的实现。包(package)至关于姓名中的“姓”,类(class)至关于“名”。因此在调用某类方法 的时候,不只须要指明方法所在的“名”,即类,还要指明方法类所在的“姓”,即包。这样编译器才知道你调用的方法是哪个。

- 问题3:看到Math类方法和 java.math包,可是却不理解为何在例3.3时不声明math包就直接使用。
3.(〃'▽'〃)本题解答:最后从新理解发现是:Math类其实在java.lang包中,我试了一下用import声明的,以下图:

删掉import java.math后的;

git
代码调试中的问题和解决过程
- 问题1:很容易忘记引用方法时后面加()。(忘记截图了)
- 1.(〃'▽'〃)本题解答:不少次这样的错误,须要进一步细致理解。
- 问题2:主目录下编写、编译、运行java文件。
- 2.(〃'▽'〃)本题解答:在主目录下编写,例:
vim src/第三周/java_homework_week3/pp3_4.java
,在主目录下编译并将class文件放入bin目录。例:javac -d bin/第三周 src/第三周/java_homework_week3
,在主目录下运行java文件。例:java src/第三周/java_homework_week3
。

上周考试错题总结
- 问题1: What value will z have if we execute the following assignment statement? float z = 5 / 10; (若是咱们执行下面的赋值语句,获得的z将会是什么值?)
A . z will equal 0.0 (z将等于0.0)
B . z will equal 0.5 (z将等于0.5)
C . z will equal 5.0 (z将等于5.0)
D . z will equal 0.05 (z将等于0.05)
E . none of the above, a run-time error arises because z is a float and 5 / 10 is an int (以上都不对,由于z是float类型,5 / 10是int类型,因此会发生运行时错误)
- 问题1分析和领悟:这道题没有认真分析,其实很简单。由于5和10是整型变量,因此进行除法运算时就会按照整形变量即int型变量进行计算,而后再进行赋值型提高转换,变成0.0.故选择B.
- 问题2:A cast is required in which of the following situations? (下列哪一种状况须要强制转换?)
A . using charAt to take an element of a String and store it in a char (使用charAt来获取字符串元素并将其存储为char类型)
B . storing an int in a float (将一个int类型的数存储为float类型)
C . storing a float in a double (将一个float类型的数存储为double类型)
D . storing a float in an int (将一个float类型的数存储为int类型)
E . all of the above require casts (以上全部状况都须要强制转换)
- 问题2分析和领悟:A答案中charAt执行后其字符就是一个,所以储存为char类型没问题。而B与C答案中都是增大了储存容量,所以也没问题。只有D答案中是由float变为int即大变小,所以须要强制转换。故选择D。
- 问题3:If x is an int and y is a float, all of the following are legal except which assignment statement? (若是x是一个int类型的数,y是一个float类型的数,下面全部赋值语句中哪一个不合法?)
A . y = x;
B . x = y;
C . y = (float) x;
D . x = (int) y;
E . all of the above are legal (以上所有合法)
- 问题3分析和领悟: 和第二个错误问题一个缘由,归根结底仍是本身理解的不够透彻。如今选择很明显,A为提高型转换,C和D为强制型转换。
- 问题4: 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都不是字符串而引发的一个错误)
- 问题4分析和领悟: 这个题纯属平时不注意而犯的错。彻底懂得两个数字不会相加。“+”起到的是链接符的做用。可是选择了C答案!错误就是在+x+y之间是没有空白符的,也就是说输出后两个数值之间没有空格,以前在练习书本上的示例和做业时,一直使用+ x + y;这样出来的两个数字是有空格的。
- 问题5: 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 (上述均可以完成)
- 问题5分析和领悟: 这个错误后来在第三章进行了了解,上述几条其实均可以达到。
- 问题6: Java is a strongly typed language. What is meant by "strongly typed"? (Java是一种强类型语言。“强类型”指的是什么?)
A . Every variable must have an associated type before you can use it (在使用变量以前,每一个变量必定都有一个与之关联的类型)
B . Variables can be used without declaring their type (变量能够在不声明其类型的状况下使用)
C . Every variable has a single type associated with it throughout its existence in the program, and the variable can only store values of that type (在程序中,每一个变量都有一个与之关联的类型,而变量只能存储该类型的值)
D . Variables are allowed to change type during their existence in the program as long as the value it currently stores is of the type it is currently declared to be (变量存在于程序中时容许改变类型,只要它当前存储的值是当前声明的类型)
E . Variables are allowed to change types during their existence in the program but only if the change is to a narrower type (变量存在于程序中时容许改变类型,但只能缩窄转换)
- 问题6分析和领悟:其实错了这道题后我仍是没有理解,看到解析。 The reason that strong typing is important is it guarantees that a program that was successfully compiled will not have run-time errors associated with the misuse of types for the variables declared.我姑且翻译一下:强类型很重要的缘由是它不会误用已经声明了的类型的变量,保证了程序正常编译而不会运行出错。(在程序中,每一个变量都有一个与之关联的类型,而变量只能存储该类型的值),B答案比较合理。
- 问题7:In Java, 'a' and 'A' are considered to be different values. (在Java中,'a'和'A'被当成不一样的数值)
A . true
B . false
- 问题7分析和领悟: 当时选错是由于认为a和A都是变量的话能够进行赋值,当我赋予相同的数值以后,就是相同的。后来通过仔细查看,原来题目中'a'和'A'表示的是字符,当其输出时, 'a' and 'A' 有不一样的ASCII 码值 和 不一样的 Unicode编号。
本周想说(感悟、思考等,可选)
这周学习效率不好劲,甚至能够说基本没有很大的进步,多是状态不太好。这周的学习内容更加具体丰富,类、对象、包、方法统统上场,刚开始阅读教材时总有一种看完合上书什么都不知道的感受,这种感受让人很难受。还有就是要造成一个具体的知识构架很不容易,经常在小知识点上卡壳,每每让我怀疑本身的理解力。还有最深入的一个道理,不要拉下太多,任务量永远是越攒越多,堆到后面会特别辛苦的赶。从这周开始。java语言的学习已经很明显的深刻和具体了,可能须要更多的投入和坚持。好的,说完了,继续加油!
学习进度条
目标 |
5000行 |
30篇 |
400小时 |
|
第一周 |
100/100 |
1/1 |
15/15 |
|
第二周 |
377/477 |
1/2 |
20/35 |
|
第三周 |
280/757 |
1/3 |
22/57 |
心有点累,不太好学 |
参考资料
1.Java中空对象(null)引用方法及属性简单分析!
2.Java开发环境的熟悉
3.java程序设计教程(第八版)vim