20155228 2016-2017-2 《Java程序设计》第5周学习总结

教材学习内容总结

异常处理

  • try-catch语法:JVM执行try区块中的代码,如果发生错误就会跳到catch进行比较,如果错误类型被抛出错误的类型相符就执行catch区块中的代码。

  • 错误会被包装为可抛出的对象,错误对象都是继承自Java.lang.Throwable类,Java.lang.Throwable类有两个子类:java.lang.Error和java.lang.Exception。程序设计本身的错误一般使用Exception或其子类来实现。

  • 如果一个方法声明会抛出Throwable或子类实例,只要不是属于Error、java.lang.RuntimeException或其子类实例,就必须使用try-catch语法或者throws声明这个方法会抛出异常,否则就会编译失败。

  • 在Exception或其子对象中,RuntimeException和其子对象成为执行时期异常或称非受检异常,其他的对象称为受检对象。

  • 父类异常对象的捕捉必须放在子类异常对象捕捉之前,否则父类异常对象永远不会被执行,编译会出错。

  • 多重捕捉的catch中列举的异常不能有继承关系,否则编译会出错。

  • 如果抛出的是受检异常,必须在方法上使用throws声明,如果是抛出非受检异常,就不需要throws声明。

  • 堆栈追踪可以知道异常的根源,可以调用异常对象的printStackTrace()方法得到异常的根源和调用方法的顺序。getStackTrace()方法可以取得个别堆栈追踪元素进行处理。fillInStackTrace()方法可以让堆栈异常的起点为重抛异常的地方。

  • 断言assert:

assert 表达式 //表达式的结果只能是true或者false,如果是false就会编译出错
assert 表达式1:表达式2 //表达式2在表达式1位false时执行
  • finally:try-catch语法可以和finally搭配,无论try区块中是否有异常都会先执行finally区块中的代码。

  • 自动尝试关闭资源:想要尝试自动关闭资源的对象写在try后面的括号之中。尝试自动关闭资源的对象必须操作Java.lang.AutoCloseable接口。在try括号中,越后撰写的对象资源越早被关闭。

Collection与Map

  • 收集对象的共同行为定义在Collection中,在收集对象会有不同的需求,会依据需求使用不同的接口操作对象。

  • list:一种以索引方式保留收集对象的顺序的Collection。ArrayList在内存中是连续的线性空间,根据索引随机存取时速度快,适用于排序。LinkedList采用了链接的结构,适用经常变动索引的情况。

  • Set:收集不重复的内容。hashset的操作概念是,每个内存空间都有一个hash编码,这些空间称为hash桶。如果一个对象要加入hashset,则会调用对象的hashCode()取得hash码,并尝试放入对应号码的hash桶中。如果hash桶中已经有对象了,就会调用equals()进行比较。

  • Queue:收集的对象加入至尾端,取得对象时从前端。其中offer()方法用来加入对象,poll()方法用来取出对象,peek()方法是取出对象但是保留队列中的对象。

  • 泛型:指定某个类或者方法支持泛型,可以用类型代号代替实际类型。

  • lambda表达式:lambda表达式的语法可以省略了接口类型与方法名称,->左边是参数列,而右边是方法本体。

  • Interable和Ierator:使用Interable接口中的Interator方法收集所有对象

  • Comparable和Comparator:通过操作Comparable接口来使用Collection的sort()方法对对象排序。通过操作Comparator接口来重载sort()方法。

  • Map:通过操作java.util.Map接口,可以根据某个键来取得对应的值。HashMap不对键排序,TreeMap会对键排序。keySet()收集所有键,vaules()收集所有值,entrySet()收集键和值。

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

  • 关于教材P258页第三题。我的理解是,题目中try检查的numberformatexception指检查输入是否符合格式,因为输入的one是字符串,而要求输入的是整型数类型,所以我认为会显示“必须输入数字”。而网上提供的参考答案选择的也是B。但是我在写代码的时候却惊奇地发现,显示结果为arrayindexoutofboundexception,数组超过预定义长度。

  • 关于教材P258-P259页第四、五题和第六题的区别:第四题第五题是在一个类中调用了某个定义了抛出异常的方法(构造函数),在定义这个类的异常抛出的时候,可以定义和方法的异常抛出相同的类,也可以定义方法的异常抛出的类的父类。而第六题是继承,子类在定义异常抛出的类时,只能定义父类的异常抛出的类或者其子类。

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

  • 本周周内编程作业:关于Student类的对象实例的比较中遇到的问题:先定义好了student类,然后单独新建了一个名为overridequals的类重新定义了equals方法,然后overrideequals继承student类,最后再定义名为mian的类。编译通过证明没有语法问题,但事实上即使两个student实例的所有成员都是一样的,反馈都是不同。后来直接把重新定义eqauls的代码放到student类中就没有任何问题了。

代码托管

  • 代码提交过程截图:

    • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
  • 代码量截图:
    • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

上周考试错题总结

  • “Hello”.charAt(1) 的值是(‘e’)
  • System.out.println( “HELLO”.( toLowerCase() ) ) 会输出“hello”..
  • “Hello”.substring( 0,2 )的值是“He”
  • CH06填空:在构造方法中调用本类的构造方法,要使用(this)关键字
  • CH06填空:在构造方法中调用父类的构造方法,要使用(super)关键字
  • CH07 填空:面向对象中,设计经验可以用(设计模式)表达

结对及互评

评分标准(满分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

  • 参考示例

点评过的同学博客和代码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 20篇 400小时
第一周 10/10 1/4 12/12
第二周 120/130 1/5 9/21
第三周 210/340 1/6 9/30
第四周 460/800 1/7 9/39
第五周 400/1200 1/8 9/48

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

20155228 2016-2017-2 《Java程序设计》第5周学习总结的更多相关文章

  1. 20155334 2016-2017-2 《Java程序设计》第九周学习总结

    20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...

  2. 20155321 2016-2017-2 《Java程序设计》第九周学习总结

    20155321 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 厂商在实现JDBC驱动程序时,依方式可将驱动程序分为四种类型: JDBC-OD ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  5. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  8. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  9. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  10. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

随机推荐

  1. CF891C Envy 最小生成树/虚树

    正解:最小生成树/虚树 解题报告: 传送门! sd如我就只想到了最暴力的想法,一点儿优化都麻油想到,,,真的菜到爆炸了QAQ 然后就分别港下两个正解QAQ 法一,最小生成树 这个主要是要想到关于最小生 ...

  2. 【PyQt5-Qt Designer】猜数字(小项目)

    参考:https://zhuanlan.zhihu.com/p/28287825 https://www.cnblogs.com/hhh5460/p/5174266.html 最终效果: 本次练习涉及 ...

  3. sqlite数据导入mysql

    sqlite导出数据 1.首先将sqlite数据库中的数据库格式由db或者db3等转为.sql格式,方法如下: 首先是不修改路径的情况下,在命令行下(方法一): sqlite3 database_na ...

  4. jquery中$.get()提交和$.post()提交的区别

    相同点:都是异步请求的方式来获取服务器端的数据: 异同点: 1.请求方式不同:$.get()方法使用 GET 方法来进行异步请求的:$.post()方法使用POST方法来进行异步请求的: 2.参数传递 ...

  5. python基于django编写api+前端后端分离

    有用 https://segmentfault.com/a/1190000016049962#articleHeader2 python的前后端分离(一):django+原生js实现get请求 htt ...

  6. laravel项目ThinkSNS+安装

    ThinkSNS+ 是一个使用 Laravel 开发,并且功能繁多且健壮的社交程序.今天我们来跟着ytkah一起来尝鲜一下.首先PHP 版本必须大于 7.1.3,已经下载并安装过 Composer,拥 ...

  7. dedecms标签(tags)页面伪静态设置

    我们在创建文章的时候经常会设置一些tags,如果发表文章时关键词没添加的话tags也会自动成为文章的关键词,tags是一个不错的功能,通过关键词链接可以快速寻找到相关内容,但是标签页面的url经常会带 ...

  8. what's the python之异常处理

    what's the 异常 python程序中会出现异常,即bug.若出现异常程序就报错,异常之后的代码就不会继续往下执行,这是一个正常程序不允许出现的,但是在某些程序交互的时候难免会因为用户输入问题 ...

  9. 并发编程---Process对象的其他属性或方法

    Process对象的其他属性或方法 #join方法 from multiprocessing import Process import time,os ''' 需求:让主进程等着子进程运行完毕,才能 ...

  10. 【剑指offer】最小的K个数

    一.题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 二.思路: 一群大牛在讨论用噼里啪啦各种排序,复杂度一般也都是O ...