学号20155308 2006-2007-2 《Java程序设计》第3周学习总结
教材学习内容总结
对象(Object):存在的具体实体,具有明确的状态和行为
类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制
从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象
从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)
类是对象的设计图,对象是类的实例,生成对象要先定义类
- == 与 equals的区别?==比较的对象的地址,equals 是逻辑上相等。
- 构造方法决定类生成对象的方式
- 封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作。
通过构造方法(构造函数)封装初始化流程,
通过成员方法(函数)封装操作,
通过成员变量封装数据。 - 为了让Java 基本类型像类一样使用
基本类型 | 类 |
---|---|
int | Integer |
long | Long |
byte | Byte |
float | Float |
double | Double |
boolean | Boolean |
教材学习中的问题和解决过程
思考题:
- 举例说明什么是浅拷贝与深拷贝?
对于深拷贝与浅拷贝,我之前没有遇到过,所以我上百度查了一下,了解到:浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。
http://www.cnblogs.com/shuaiwhu/archive/2010/12/14/2065088.html
- 你遇到过乱码的情况没?有的话如何解决问题的?
我一般遇到乱码的时候是自己在程序之中加入了汉字,在编译的时候莫名其妙地会产生乱码,所以我的解决方法比较简单,重新打一遍就好了。但是我觉得在今后的学习中可能会见到更多乱码的情况,所以我查了一下发现其实发生乱码的情况还是很多的。
http://jingyan.baidu.com/article/fedf07377d163e35ac8977d5.html
- C语言中怎么实现数字与数字字符串的互换,如:123->“123”, “123”->123?
int atoi(const char *nptr);// aoti("123")->123
char itoa( int value, char string,int radix);// itoa(123, str, 10)->"123", str=="123"
- Java中怎么实现数字与数字字符串的互换,如:123->“123”, “123”->123?
int atoi(String nptr)
String itoa(int value, int radix)
课程学习问题:
- p84 Field.java: 访问对象的成员变量sun == spring?
答:不相等。
- 课本P88提到了java.util.Scanner和java.math.BigDecimal,这些类中有哪些方法?
答:扫描输入文本,可以任意地对字符串和基本类型的数据进行分析。Scanner对每个基本类型都有个相对应的next###()的方法(例如nextByte(),nextShort(),nextLong(),nextFloat(),nextBoolean())。
- p104 CopyArray.java: 数组复制
怎样证明修改score2不影响score1?
答:printf score1,再和之前输入的scores1进行对比,就会发现score1没有改变。
- p108 Sum.java: 字符串转成数字
parseLong的功能?nextLine的功能?
答:parseLong将number剖析为long整数。
nextLine()这是一个更加方便的功能,直接取得用户输入的整行文字。
- op1.add(op2).add(op3).equals(result)是什么用法?
答:由于BigDecimaladd()等方法都会返回代表运算结果BigDecimal,所以直接利用BigDecimal再调用add()方法,最后在调用equals()比较BigDecimal实质上是否相同。
代码调试中的问题和解决过程
解决方案:不要到命令行下运行!运行不出来。
代码托管
- 代码提交过程截图:
%an, %cd : %s" 并截图
- 代码量截图:
上周考试错题总结
- 填空:Linux Bash中,查找当前目录中前天创建的Java文件的命令是(find . –name .java -ctime 2)。
这道题我又错了一次,这次是因为自己没有注意题目,同时也反应了自己对于文件查找这方面的不足。* - byte a=3;byte b=4; 那么 a+b的类型也是byte.(X)
a+b的类型是int型,如果要是想要输出byte型,要强制转换。 - 0.123 == 1.23e-2 (X)
这道题我还是不明白为什么是错误的...... - 判断:教材P51,第8 题 ,执行命令 java –cp classes cc.openhome.Main 和cd classes; java cc.openhome.Main;cd .. 等价。(OK)
这一题是前几章的问题,说明我对前几章的学习有所放松,应该及时多加复习。 - Java中,非零数字等价于true.(X)
这是C语言中的说法,在java中没有这样的说法。不能拿固有想法来判断。
其他(感悟、思考等,可选)
我认为这周的学习任务还是比较重的,而且有很多新的事物需要接受。首先对于java中有基本类型和类类型两个类型系统,而java的学习几乎都在使用对象,所以定义类的学习就比较重要了。同时在学习中,我发现了类的学习与C语言有很大的不同,虽然整个程序的编程思想是一样的,但是java中有很多新的名词,例如关键词new等,这是我们学习所要注重的重点。
学习进度条
代码行数(新增积) | 博客量(新增积) | 学习时间(新增积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第三周 | 200/200 | 2/2 | 20/20 | 深入学习了java |
计划学习时间:15小时
实际学习时间:20小时
改进情况:我的学习时间没有变化,但是感觉时间还是没有足够,因为这周的学习还是比较重的,下一次应该多加一些时间学习。