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的一个子类(匿名类)创建对象

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

与接口有关的匿名类

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

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

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

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

  • try - catch 语句

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

    [ 前言]  Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...

  2. Java基础——JDBC

    今天学习的内容是:JDBC 通常jdbc连接分6步: 1)注册驱动: 2)建立连接: 3)创建Statement: 4)执行sql 语句: 5)处理结果集(若sql 语句为查询语句): 6)关闭连接. ...

  3. PL/SQL Developer 如何记住密码

    前言:使用时总结一下. 问题: 登录的时候不想每次都输入密码,能记住最好了. 解决方案: 1.点击配置->首选项 2.选择登录历史,勾上带口令存储,然后应用,确定即可.

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

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

  5. github|webstorm

    分享本地项目到github 从github上迁出项目到本地

  6. p2p登录拦截

    1.编写拦截标签 package com.xmg.p2p.base.util; import java.lang.annotation.ElementType; import java.lang.an ...

  7. CentOS7系列--2.2CentOS7中配置SSH服务

    CentOS7配置SSH服务 1. SSH配置 1.1. 使用SSH服务更加安全 [root@centos7 ~]# vi /etc/ssh/sshd_config 设置如下 PermitRootLo ...

  8. Difference between model.evaluate vs model.predict in Keras

    The  model.evaluate  function predicts the output for the given input and then computes the metrics ...

  9. 数字时钟(DigitalClock)

    数字时钟(DigitalClock) 这个其实就是我们平时看到的手机上面显示的时间 很简单 1.Activity //数字时钟 public class DigitalClockActivity ex ...

  10. Flink1.4.0中反序列化及序列化类变化

    Flink1.4.0中,反序列化及序列化时继承的类,有一些被标记为了“@deprecated”,路径上也有变化: 1.AbstractDeserializationSchema 以前路径 org.ap ...