20155225 2006-2007-2 《Java程序设计》第五周学习总结

教材学习内容总结

使用try、catch异常处理,异常处理继承架构等
使用Collection收集对象,了解Collection架构
使用Map建立键值对应数据,了解Map架构

教材学习中的问题和解决过程

 @Override
    public String toString()  {
        return String.format("(%s, %s)", name, number);
    }

toString()是定义在Object中的一个方法,String类是Object的子类,String类重写了这个方法,现在是在Student类中重写toString(),作用是将类中两个字符串变量根据我制定字符串格式和参数生成格式化的新字符串。

  • 问题2:书上269页代码有问题,应该是System.out.println(students);

  • 问题3:这段代码中用到的add()方法,是直接将新建的Student对象加入students中,此处是不是已经默认会调用toString()方法合成字符串并将返回的字符串存入students,所以最后才会直接打印出来合成后的字符串。

public class Students {
    public static void main(String[] args) {
        Set students = new HashSet();
        students.add(new Student("Justin", "B835031"));
        students.add(new Student("Monica", "B835032"));
        students.add(new Student("Justin", "B835031"));
        System.out.println(students);
    }
}
  • 问题4:为什么要用getclass()再去取得这个对象所对应的对象(不就是本身吗?)为什么不能写成getClass()!=obj;
@Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }//比较是不是参考的同一个对象
        final Student2 other = (Student2) obj;//不明白!!!
        if (!Objects.equals(this.name, other.name)) {
            return false;
        }//这里不就是重定义equals吗?又调用equals是什么意思?
        if (!Objects.equals(this.number, other.number)) {
            return false;
        }
        return true;
    }
  • 解决方法:百度找了篇文章Object中getClass()方法详解obj只是一个标签,要取得这个标签对应的对象实例就要用getclass(),但是比较标签是不是参考到同一个实例,直接用=不就行了吗?

  • 问题5:272页代码,以下代码中Request是定义的一个接口,为什么后面会有Request request = new Request(),难道接口可以实例化?

interface Request {
    void execute();
}

    static void offerRequestTo(Queue requests) {
        for (int i = 1; i < 6; i++) {
            Request request = new Request() {
                public void execute() {
                    System.out.printf("处理资料 %f%n", Math.random());
                }
            };
            requests.offer(request);
        }
    }
}

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

  • 问题1:编译的时候提示使用了未经检查或不安全的操作。
    image
  • 解决方案:查了百度,是没有使用泛型的原因,但使用后仍然这样提示。还在努力中……

代码托管

image
image

上周考试错题总结

  • 错题1:使用JDB进行调试时查看源代码的命令是(list)
  • 原因:还没弄好JDB,还没调试过。
  • 错题2:”Hello”.substring( 0,2 )的值是“He”
  • 理解情况:还不会看API文档。截取字符串的方法。
  • 错题3:可以用父类声明对象引用,用子类生成对象,但需要强制类型转换。
  • 原因和理解情况:不知道这句话什么意思。也就是Role Role = new SworsMan()这个例子。
  • 错题4:面向对象中,设计经验可以用(设计模式)表达
  • 错题5:Math中的abs()方法可以Override.(X)
  • 理解情况:abs()是取数值绝对值的方法。

结对及互评

评分标准(满分10分)

  1. 从0分加到10分为止

  2. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  3. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  4. 教材学习中的问题和解决过程, 一个问题加1分

  5. 代码调试中的问题和解决过程, 一个问题加1分

  6. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分

6 其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
7 扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分

点评模板:

  • 基于评分标准,我给本博客打分:(0-10)。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

其他

这周学习感觉问题更多了,可能之前的学习特别是对示范代码的学习太流于表面,只是在打字母,而不是在敲代码。认真分析起代码来,觉得很多地方不理解为什么怎么写,正在努力改进。同时我感受到一点面向对象和C语言面向过程不同,面向过程很注重从内存看问题,任何一步操作都要知道在内存里发生了什么,而面向对象则不然,书上的讲述中也可以感受到更注重调用方法后的结果,而不甚关心内存。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 10/10 1/7 20/20
第二周 120/130 1/8 8/38
第三周 543/673 1/9 25/60
第四周 529/1072 1/10 25/90
第五周 609/1681 1/11 20/110

实际学习时间20.
计划学习时间15.

参考资料

posted on 2017-03-26 22:05  20155225江智宇  阅读(347)  评论(8编辑  收藏  举报