学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

时间:2022-08-20 19:18:47

学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

教材学习内容总结

对象(Object):存在的具体实体,具有明确的状态和行为

类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制

从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象

从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)

类是对象的设计图,对象是类的实例,生成对象要先定义类

  1. == 与 equals的区别?==比较的对象的地址,equals 是逻辑上相等。
  2. 构造方法决定类生成对象的方式
  3. 封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作。
    通过构造方法(构造函数)封装初始化流程,
    通过成员方法(函数)封装操作,
    通过成员变量封装数据。
  4. 为了让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实质上是否相同。

代码调试中的问题和解决过程

学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

解决方案:不要到命令行下运行!运行不出来。

代码托管

  • 代码提交过程截图:
    学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

%an, %cd : %s" 并截图

  • 代码量截图:
    学号20155308 2006-2007-2 《Java程序设计》第3周学习总结

上周考试错题总结

  1. 填空:Linux Bash中,查找当前目录中前天创建的Java文件的命令是(find . –name .java -ctime 2)。
    这道题我又错了一次,这次是因为自己没有注意题目,同时也反应了自己对于文件查找这方面的不足。*
  2. byte a=3;byte b=4; 那么 a+b的类型也是byte.(X)
    a+b的类型是int型,如果要是想要输出byte型,要强制转换。
  3. 0.123 == 1.23e-2 (X)
    这道题我还是不明白为什么是错误的......
  4. 判断:教材P51,第8 题 ,执行命令 java –cp classes cc.openhome.Main 和cd classes; java cc.openhome.Main;cd .. 等价。(OK)
    这一题是前几章的问题,说明我对前几章的学习有所放松,应该及时多加复习。
  5. Java中,非零数字等价于true.(X)
    这是C语言中的说法,在java中没有这样的说法。不能拿固有想法来判断。

其他(感悟、思考等,可选)

我认为这周的学习任务还是比较重的,而且有很多新的事物需要接受。首先对于java中有基本类型和类类型两个类型系统,而java的学习几乎都在使用对象,所以定义类的学习就比较重要了。同时在学习中,我发现了类的学习与C语言有很大的不同,虽然整个程序的编程思想是一样的,但是java中有很多新的名词,例如关键词new等,这是我们学习所要注重的重点。

学习进度条

代码行数(新增积) 博客量(新增积) 学习时间(新增积) 重要成长
目标 5000行 30篇 400小时
第三周 200/200 2/2 20/20 深入学习了java
  • 计划学习时间:15小时

  • 实际学习时间:20小时

  • 改进情况:我的学习时间没有变化,但是感觉时间还是没有足够,因为这周的学习还是比较重的,下一次应该多加一些时间学习。

有空多看看现代软件工程 课件 软件工程师能力自我评价表

参考资料