20165318 2017-2018-2 《Java程序设计》第五周学习总结

学习总结

  • 在使用IDEA时,由于我之前编写的代码都是使用GBK编码,使用IDEA打开时,由于IDEA默认为UTF-8,代码会出现中文乱码,这时候可以使用如下方法,将IDEA的编码改成GBK

教材内容总结:

第七章 内部类与异常类

####### 一、 内部类与匿名类

  • 内部类:

    1.内部类可以使用外嵌类的成员变量和方法。

    2.类体中不可以声明类变量和类方法。

    3.内部类仅供外嵌类使用。

    4.类声明可以使用static修饰,static内部类不能操作外嵌类中的实例成员变量。

    :非内部类不可以是static类。

  • 匿名类:

    1.匿名类一定是内部类。

    2.可以使用外嵌类的成员变量和方法。

    3.不能声明类变量和类方法。

    4.必须使用父类的构造方法。

    5.可以直接使用父类的方法,也可重写。

用bank的一个子类(匿名类)创建对象

  1. new Bank() { //使用父类的构造方法
  2. 匿名类的类体
  3. }; //**注意:结尾加分号**

与接口有关的匿名类

  1. new Computable() {
  2. 实现接口的匿名类的类体 //**类体必须要重写接口中的全部方法**
  3. };

####### 二、异常类

  • 异常是指程序运行时可能出现的一些错误。

  • public static int parseInt(String s)可以将“数字”格式的字符串转化为 int 型数据。

  • try - catch 语句

  1. try {
  2. 包含可能发生异常的语句
  3. }
  4. catch(ExceptionSubClass1 a) {
  5. ...
  6. }
  7. catch(ExceptionSubClass1 b) {
  8. ...
  9. }
  10. ```
  11. - 一旦`try`部分抛出异常,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么`try`部分将立刻结束执行,转向相应的`catch`部分。程序可以将发生异常后的处理放在`catch`部分。
  12. - `try - catch`语句可以由几个`catch`组成,分别处理发生的相应异常。
  13. - 各个`catch`参数中的异常类都是`Exception`的某个子类,表示`try`部分可能发生的异常,这些子类之间不能有父子关系,否则保留一个含有父类参数的`catch`即可。
  14. - 自定义异常类的步骤:
  15. 1.定义自己的异常类(`Exception`的子类);
  16. 2.在可能出现异常的方法中,声明时使用**throws**关键字声明要产生的若干个异常,并在方法体中具体给出产生异常的操作,用**throw**抛出异常对象。
  17. 3.在程序中使用`try-catch`块语句调用可能发生异常的方法。
  18. - `finally`语句
  19. - 如果在`try-catch`语句中执行了`return`语句,那么`finally`子语句依旧会被执行。
  20. - `try-catch`语句中执行了程序退出代码,执行`System.exit(0)`;那么不执行`finally`子语句。
  21. ###### 三、断言
  22. - 程序正式运行时,断言语句自动关闭,可以使用`java -ea` 文件名;
  23. - 程序调试阶段,断言语句发挥正常作用;
  24. - 断言语句的两种格式
  25. - `assert bolleanException`:当`bolleanException`的值是true时,程序从断言语句处继续执行;值是false时,程序从断言语句处停止执行。
  26. - `assert blooeanException:messageException`:当`bolleanException`的值是true时,程序从断言语句处继续执行;值是false时,程序从断言语句处停止执行,并输出`messageException`表达式的值。
  27. #### 第十章 输入、输出流
  28. - 输入流的指向称为它的源,程序通过输入流读取源中的数据
  29. - 输出流的指向称为它的目的地,程序通过输出流把数据传送到目的地
  30. ####### 一、**File**类
  31. - **File**类的对象主要用来获取文件本身一些信息,不涉及对文件的读写操作。
  32. - 构造方法 :
  33. `File(String filename)`
  34. `File(String directoryPath,String filename)`
  35. `File(File dir,String filename)`
  36. - 文件的属性:常使用**File**类的一些方法获取文件本身的一些信息。
  37. - 创建目录:**File**对象调用方法`public boolean mkdir()`创建一个目录,成功返回true,否则(该目录已存在)返回false。
  38. - 运行可执行文件:`Runtime ec = Runtime.getRuntime();`。
  39. - 使用输入流步骤:
  40. 1.设定输入流的源;
  41. 2.创建指向源的输入流;
  42. 3.让输入流读取源中的数据;
  43. 4.关闭输入流;
  44. **注:程序必须在`try-catch`语句中的`try`块部分创建输入流,在`catch`块部分检测并处理这个异常。**
  45. - 输出流步骤与输入流类似
  46. - 读取 :输入流读取 `int read`方法,输出流读取`void write`方法。
  47. - 关闭流:输入流`in.close(); `,输出流`void.close();`。
  48. - 缓冲流
  49. 1.`BufferedReader`和`BufferedWriter`类创建的对象称为缓冲输入、输出流,二者增强了读写文件的能力。
  50. 2.`BufferedReader`流和`BufferedWriter`流,二者的源和目的地必须是字符输入流和输出流。
  51. 3.构造方法`BufferedReader(Reader in);``BufferedWriter(Writer out);`。
  52. - 随机流
  53. 1.`RandomAccessFile`类创建的流称为随机流,可以从这个流中读取文件的数据,也可以通过这个流写入数据到文件。
  54. 2.`RandomAccessFile`流指向文件时,不刷新文件。
  55. - 数组流
  56. - 数据流
  57. - 对象流
  58. - 使用Scanner类和正则表达式来解析文件的特点是以时间换取空间,即解析的速度相对比较慢,但节省内存
  59. ## 教材中问题与解决过程
  60. - 问题1:为什么要使用匿名类:
  61. - 解决过程:如果一个方法的参数类型是A类,用户希望向方法传递A的子类对象,但系统没有提供符合要求的子类,那么用户在编写代码时就可以考虑使用匿名类。
  62. ## 代码调试过程中的问题与解决过程
  63. - 问题1:运行Example7_2时报错
  64. ![](https://images2018.cnblogs.com/blog/1296414/201803/1296414-20180330223643274-881199828.png)
  65. - 解决过程:检查后发现,使用输出方法时,习惯性的使用了`System.out.println`而正确的代码是`System.out.printf`。
  66. - 问题2:运行Example7_7时出现以下问题
  67. ![](https://images2018.cnblogs.com/blog/1296414/201803/1296414-20180330223039820-1870309444.png)
  68. - 解决过程:仔细检查代码后发现,在编码时多写了一个“}”,导致主类没办法被识别,使用IDEA中的代码格式化也没有发现错误。
  69. - 问题3:自己编写课后习题第四大题,使用断言,本应该当输入数字大于100或小于0时,终止执行,但实际运行却出现如下错误:
  70. ![](https://images2018.cnblogs.com/blog/1296414/201803/1296414-20180330224110728-2032315980.png)
  71. - 解决过程:重新学习断言相关知识点时发现,当断言判断条件为true时,程序继续执行,为false时,才会停止执行。而我第一遍看的时候没有记清楚,刚好将判断条件写反了,导致程序不能运行,改正过后,就可以正常运行了。结果如下图:
  72. ![](https://images2018.cnblogs.com/blog/1296414/201803/1296414-20180330224454737-1532727304.png)
  73. - 问题4:调试Example10_2时,运行后没有输出结果。
  74. - 解决过程:看书中相关知识后,发现我输入流打开的目录中没有`.java`类型的文件,在这个目录中添加`.java`类型的文件,就可以正常运行了。
  75. - 问题5:调试Example10_4时,运行提示以下错误:
  76. ![](https://images2018.cnblogs.com/blog/1296414/201803/1296414-20180330231542580-763516322.png)
  77. - 解决过程:问题在于打开文件的路径不正确,将`Example10_4.java`改为`src/Example10_4.java`就可以正常运行了。
  78. - 问题6:运行Example10_17时,对话框不会操作问题,实际输出的对话框与书上的截图有差距
  79. ![](https://images2018.cnblogs.com/blog/1296414/201804/1296414-20180401151058633-762226124.png)
  80. - 解决过程:需要点击左上角的“文件”下拉菜单的“打开”,才能得到书上截图的效果。同时我发现如果把 “楷体_gb2312” 改为 “UTF-8” 不会影响窗口的操作性。
  81. ![](https://images2018.cnblogs.com/blog/1296414/201804/1296414-20180401145256067-294770072.png)
  82. ## 码云链接
  83. https://gitee.com/besti-is-java-2018/20165318_sun_xiaoxuan
  84. ## 代码截图
  85. ![](https://images2018.cnblogs.com/blog/1296414/201803/1296414-20180331000524676-730912759.png)
  86. ![](https://images2018.cnblogs.com/blog/1296414/201803/1296414-20180331000541731-186288376.png)

20165318 2017-2018-2 《Java程序设计》第五周学习总结的更多相关文章

  1. 201521123025<java程序设计>第五周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...

  2. Java程序设计第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...

  3. 20165318 2017-2018-2 《Java程序设计》第九周学习总结

    20165318 2017-2018-2 <Java程序设计>第九周学习总结 目录 学习过程遇到的问题及总结 教材学习内容总结 第13章 Java网络编程 代码托管 代码统计 学习过程遇到 ...

  4. 20165318 2017-2018-2 《Java程序设计》第二周学习总结

    20165318 2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习了第二章和第三章的内容,掌握了Java中基本数据类型.数组.运算符.表达式和语句等方 ...

  5. 20165318 2017-2018-2 《Java程序设计》第一周学习总结

    20165318 2017-2018-2 <Java程序设计>第一周学习总结 教材内容学习总结 第一章主要对Java平台进行了简单的介绍,并讲解了如何搭建Java环境. Java平台概论 ...

  6. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

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

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

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

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

  9. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  10. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

随机推荐

  1. sql count执行速度测试

    要对数据库里面的数据数量进行统计使用,数据库的大概有2000w多的数据.数据库是mysql5.6 用的是远程连接测试 ELECT COUNT(*) 执行语句: select count( *) fro ...

  2. 【转】从msql数据库处理高并发商品超卖

    今天王总又给我们上了一课,其实mysql处理高并发,防止库存超卖的问题,在去年的时候,王总已经提过:但是很可惜,即使当时大家都听懂了,但是在现实开发中,还是没这方面的意识.今天就我的一些理解,整理一下 ...

  3. 小tip:巧用CSS3属性作为CSS hack——张鑫旭

    一.开篇小问题 题目:实现类似下图的宽度自适应效果,IE9+,FireFox,Chrome,Opera等使用CSS3实现,IE6~8浏览器使用图片实现. 计时思考…… 二.思考中 ————- 假设这是 ...

  4. DW如何打开已经关闭的站点文件提示框

    DW在已经新建成功站点后,若将站点文件提示框关闭后,如何重新打开呢?即如下图所示的提示框: 点击站点下拉菜单中的‘在站点定位’即可打开关闭的提示框.

  5. Fastify 系列教程二 (中间件、钩子函数和装饰器)

    Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) Fastify ...

  6. javascript元素跟随鼠标在指定区域运动

    元素跟随鼠标在指定区域运动通常是用在商城图片的放大镜中,下面是完整的Demo: <!DOCTYPE html> <html lang="en"> <h ...

  7. MySQL创建数据库/表等基本命令操作

    前提:安装好MySQL并且配置好服务,能够正常使用 按住键盘上的Windows图标,通过搜索框找到MySQL5.7 Command Line Client,点击启动 输入安装时设置用户的密码 成功连接 ...

  8. 分享一个oracle 完整备份的批处理文件

    该批处理是基本可以无限针对使用window 服务器的oracle 备份,如下: set mydate=%DATE:~0,10% exp e_cards2016/e_cards2016@orcl ful ...

  9. LK光流算法的三个假设

    在实际过程中采用 Lucas-Kanade 光流算法跟踪运动物体特征点的时候,一个很明显的特点是LK算法(包括其他光流算法)不能计算"大运动",加上金子塔的方法稍微好点. 这是什么 ...

  10. android之画板功能之橡皮擦 画笔大小和画笔颜色

    第一展示设置画笔颜色的功能,第二展示设置画笔大小的颜色,而第三则展示橡皮擦的功能,这节将图标颜色设置为了蓝色,并且,增加了最左边的按钮(其实,就是在gridview中多增加了一个item). 下面分别 ...