20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结
20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结
教材学习内容总结
第七章 内部类与异常类
内部类:在一个类中定义另一个类;包含内部类的类为外嵌类
- 内部类仅供其外嵌类使用
- 内部类不可以声明类变量和类方法
- 外嵌类的成员变量在内部类中有效
- 内部类对应的字节码文件名字格式是:“外嵌类名$内部类名”
匿名类:被认为是一个子类去掉类声明后的类体
不可以用匿名类声明对象,却可以直接用匿名类创建一个对象
使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类
在用匿名类创建对象时,要直接使用父类的构造方法
若某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象,类体必须要重写接口中的全部方法
如例子2中
board.showMess(new OutputAlphabet() //向参数传递OutputAlphabet的匿名子类对象
{ public void output() //改写父类中output方法体
{ for(char c='α';c<='ω';c++) //输出希腊字母
System.out.printf("%3c",c);
}
}
);
- 异常类
- 异常对象可以调用如下方法得到或输出有关异常信息:
public String getMessage();
public void printStackTrace();
public String toString();
- try-catch语句
try{
包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){//若try部分异常,即转向catch部分
……
}
catch(ExceptionSubClass2 e){
……
}
- 例子4
……
int n = 0,m = 0,t = 1000;
try{ m = Integer.parseInt("8888");
n = Integer.parseInt("ab89"); //发生异常,转向catch
t = 7777; //t没有机会被赋值,来不及执行就已经退出
}
catch(NumberFormatException e) {
System.out.println("发生异常:"+e.getMessage());
}
……
- 断言:一般用于程序不准备通过捕获异常来处理的错误
- 关闭断言运行:
java Example7_6 - 开启断言运行:
java -ea Example7_6

- 关闭断言运行:
import java.util.Scanner;
public class Example7_6 {
public static void main (String args[ ]) {
int [] score={-120,98,89,120,99};
int sum=0;
for(int number:score) {
assert number>0:"负数不能是成绩";//如果发现成绩有负数,程序立刻结束运行
sum=sum+number;
}
System.out.println("总成绩:"+sum);
}
}
第十章 输入、输出流
File类
- File类对象的三个构造方法
File(String filename);//filename是文件名字File(String directoryPath,String filename);//directoryPath是文件的路径File(File dir,String filename);//dir是一个目录- 使用
File(String filename)创建文件时,该文件被认为与当前应用程序在同一目录中
- File类对象的三个构造方法
文件字节输入流
- 使用输入流通常包括4个基本步骤
- 设定输入流的源
- 创建指向源的输入流
- 让输入流读取源中的数据
- 关闭输入流:
in.close();
- 构造方法
FileInputStream(String name);FileInputStream(File file);
- 文件字节流可以调用从父类继承的read方法顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取文件中的其余内容,直到文件的末尾或文件字节输入流被关闭。
- 例:
- 使用输入流通常包括4个基本步骤
File f=new File("Example10_4.java");
InputStream in = new FileInputStream(f);
- 文件字节输出流
- 使用输出流通常包括4个基本步骤
- 给出输出流的目的地
- 创建指向目的地的输出流
- 让输出流把数据写入到目的地
- 关闭输出流
- 构造方法
FileOutputStream(String name);FileOutputStream(File file);
- 输出流的wirie方法以字节单位向目的地写数据。
void write(int n)向目的地写入单个字节。void write(byte b[])向目的地写入一个字节数组。void write(byte b[],int off,int len)从字节数组中偏移量off处取len个字节写到目的地。
- 例:
- 使用输出流通常包括4个基本步骤
File file = new File("a.txt"); //输出的目的地
OutputStream out=new FileOutputStream(file);
- 文件字符输入、输出流
- Reader类提供的read方法以字符为单位顺序地读取源中的数据。
- Writer流以字符为单位顺序地写文件,每次调用write方法就顺序地向目的地写入内容。 Writer类有如下常用的方法。
- 例:
File sourceFile = new File("a.txt"); //读取的文件
File targetFile = new File("b.txt"); //写入的文件
Writer out = new FileWriter(targetFile,true); //指向目的地的输出流
Reader in = new FileReader(sourceFile); //指向源的输入流
- 缓冲流
- BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流。
- 二者的源和目的地必须是字符输入流和字符输出流。
- 构造方法
BufferedReader(Reader in);BufferedWriter (Writer out);
- BufferedReader和BufferedWriter类读写文件的方法
readLine()读取文本行write(String s,int off,int len)把字符串s写到文件中newLine();向文件写入一个回行符
- 例子7
File fRead = new File("english.txt");
File fWrite = new File("englishCount.txt");//命名文件名
try{ Writer out = new FileWriter(fWrite);// **字符输出,底层**
BufferedWriter bufferWrite = new BufferedWriter(out);
//输出预备
Reader in = new FileReader(fRead);// **字符输入,底层**
BufferedReader bufferRead =new BufferedReader(in);
//输入预备
String str = null;
while((str=bufferRead.readLine())!=null) {
StringTokenizer fenxi = new StringTokenizer(str);
int count=fenxi.countTokens();// **处理字符串有几个词(第八章)**
str = str+" 句子中单词个数:"+count;
bufferWrite.write(str);
bufferWrite.newLine();
}
bufferWrite.close();
out.close();
// **先关高级流,再关底层流;Java规定只要关了前者,后者自动会关**
in = new FileReader(fWrite);
bufferRead =new BufferedReader(in);
String s=null;
System.out.println(fWrite.getName()+"内容:");
while((s=bufferRead.readLine())!=null) {
System.out.println(s);
}
bufferRead.close();
in.close();
}
catch(IOException e) {
System.out.println(e.toString());
- 随机流
- 使用RandomAccessFile类来创建一个随机访问文件流。RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地。
- 既不是InputStream的子类也不是OutStream的子类
- 构造方法
RandomAccessFile(String name,String mode) ;(mode可以是r或rw)RandomAccessFile(File file,String mode) ;
- 例:
RandomAccessFile in=null;
in=new RandomAccessFile("Example10_9.java","rw");
- 数据流
- 允许程序按着机器无关的风格读取Java原始数据,不必再关心这个数值应当是多少个字节
- 是InputStream的子类和OutStream的子类
- 构造方法
DataInputStream(InputStream in)创建的数据输入流指向一个由参数in指定的底层输入流DataOutputStream(OutnputStream out)创建的数据输出流指向一个由参数out指定的底层输出流
- 例:
File file=new File("apple.txt");
FileOutputStream fos=new FileOutputStream(file);
DataOutputStream outData=new DataOutputStream(fos);
- 对象流:对于对象输入、输出
- 允许程序按着机器无关的风格读取Java原始数据,不必再关心这个数值应当是多少个字节
- 是InputStream的子类和OutStream的子类
- 构造方法
ObjectInputStream(InputStream in)ObjectOutputStream(OutputStream out)
- 例:
File file=new File("television.txt");
FileOutputStream fileOut=new FileOutputStream(file);
ObjectOutputStream objectOut=new ObjectOutputStream(fileOut);
- 使用Scanner解析文件
- 使用默认分隔标记解析文件
- 相关方法
next()依次返回file中的单词hasNext()判断file最后一个单词是否已被next()方法返回
- 创建Scanner对象,并指向要解析的文件,例如:
- 相关方法
- 使用默认分隔标记解析文件
File file = new File("hello.java");
Scanner sc = new Scanner(file); //sc将空白作为分隔标记
- 使用正则表达式作为分隔标记解析文件
- 相关方法
next()依次返回file中的单词hasNext()判断file最后一个单词是否已被next()方法返回
- 创建Scanner对象,指向要解析的文件,并使用useDelimiter方法指定正则表达式作为分隔标记,例如:
- 相关方法
File file = new File("hello.java");
Scanner sc = new Scanner(file);
sc.useDelimiter(正则表达式); //sc将正则表达式作为分隔标记
教材学习中的问题和解决过程
- 问题1:不知道书P167中例子4重的e.getMessage();中方法于哪里
- 问题1解决方案:书P167最上面有三个异常对象可以调用的方法例举
- 问题2:区分不清书上按字节输入/出,按字符输入/出,缓冲流、数据流、对象流、随机流的使用方法(如何定义、语法格式)
- 问题2解决方案:掌握谁是谁的子类,或是单独作为一类即可很好地写出语法
代码调试中的问题和解决过程
- 无
代码托管


上周考试错题总结
如果有以下程序片段
interface Some{
void dosome ();
}
class SomeImpl implements Some {
public void dosome(){
System.out.println("做一些事");
}
}
public class Main {
public static void main (String [] args) {
Some s= new SomeImpl();
s.dosome ();
}
}
以下描述正确的是
A .编译失败
B .显示“做一些事”
C .发生ClassCastException
D .执行时不显示任何信息
正确答案: B 你的答案: A
结对及互评
点评模板:
博客中值得学习的或问题:
有针对自己的问题积极寻找解决方法,和其他同学讨论
教材总结那里可以再精简一点更好
代码中值得学习的或问题:
- 无
基于评分标准,我给本博客打分:12分。得分情况如下:正确使用Markdown语法(加1分);模板中的要素齐全(加1分);教材学习中的问题和解决过程, 一个问题加1分; 代码调试中的问题和解决过程, 一个问题加1分;本周有效代码超过300分行的(加2分);感想,体会不假大空的加1分;排版精美的加一分;进度条中记录学习时间与改进情况的加1分;代码Commit Message规范的加1分;点评认真,能指出博客和代码中的问题的加1分;结对学习情况真实可信的加1分
点评过的同学博客和代码
- 本周结对学习情况
- 结对同学学号20175212
- 结对学习内容
- 本周教材对于第七章、第十章的知识进行学习
- 合作写出了四则运算练习器程序的第一阶段任务
- 结对学习内容
- 上周博客互评情况
其他(感悟、思考等,可选)
- 本周和结对伙伴初步设计出了四则运算练习器,扩展了如调用eval方法,getPercentInstance方法等知识
- 通过对教材的学习,了解了两个特殊类的使用方法及输入、输出流相关知识
- 要注意区别各个类使用时的语法格式
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 第一周 | 11/11 | 1/1 | ||
| 第二周 | 262/273 | 1/2 | ||
| 第三周 | 642/915 | 1/3 | ||
| 第四周 | 384/1299 | 2/5 | ||
| 第五周 | 661/1960 | 1/6 | ||
| 第六周 | 1031/2991 | 2/8 |
参考资料
- [Java2实用教程(第5版)]
20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结的更多相关文章
- 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》
2018-2019-2 20175227张雪莹<Java程序设计> 实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号: ...
- 2018-2019-2 20175227张雪莹《Java程序设计》 实验二《Java面向对象程序设计》
2018-2019-2 20175227张雪莹<Java程序设计> 实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...
- 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉
2018-2019-2 20175227张雪莹<Java程序设计> 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:2017 ...
- 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》
2018-2019-2 20175227张雪莹<Java程序设计> 实验五 <网络编程与安全> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:20 ...
- 2018-2019-2 20175227张雪莹《Java程序设计》实验四 《Android程序设计》
2018-2019-2 20175227张雪莹<Java程序设计> 实验四 <Android程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章 泛型与集合框架 泛型:主要目的是可以建立具有类型安全的集合框架,如链表.散列 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第五周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 第六章接口与实现 接口 接口体中所有的常量访问权限一定是public和static(可 ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第四周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第四周学习总结 教材学习内容总结 一.子类和父类. 1.子类只继承父类中的protected和public访问权限的成员 ...
随机推荐
- java框架之SpringBoot(7)-异常处理
前言 在 SpringBoot 项目中,默认情况下,使用浏览器访问一个不存在的地址会返回如下错误页面: 而当客户端未非浏览器时,错误信息则会以 json 数据返回,如下: 会出现如上效果的原因是 Sp ...
- 绿色版mssql
1.安装2008绿色版,缺少对应的企业管理器,安装官方版本的提示电脑没有重启(已经重启后) 2.选择一个可用版本的mssql,2000的可以用,MSSQL2000-HaoSQL,自带企业管理器和查询器
- eclispe集成Scalas环境后,导入外部Spark包报错:object apache is not a member of package org
在Eclipse中集成scala环境后,发现导入的Spark包报错,提示是:object apache is not a member of package org,网上说了一大推,其实问题很简单: ...
- Unable to register MBean [HikariDataSource (HikariPool-0)] with key 'dataSou rce'; nested exception is javax.management.InstanceAlreadyExistsException: com.z axxer.hikari:name=dataSource,type=HikariDa
今天启动项目看到已经启动起来,但是看到控制台有红色,没注意是什么问题,具体在细看下,发现是一个Tomcat中发布了两个实例. 解决办法:去发布路径下,全部删掉或者删掉不用的即可.
- Python之猴子补丁
1.在运行时,对属性,方法,函数等进行动态替换 2.其目的往往是为了通过替换,修改来增强,扩展原有代码的能力 #test2.py class Person: def get_score(self): ...
- bs4.FeatureNotFound: Couldn’t find a tree builder with the features you requested: lxml.
python3 bs4解析网页时报错: bs4.FeatureNotFound: Couldn’t find a tree builder with the features you requeste ...
- npm 传入参数
你可以运行类似npm start 8080的代码,并且不需要去修改script.js或者配置文件: 例如,在你的"scripts"JSON值,包括-- "start&qu ...
- 《CSS世界》读书笔记(五) --height:100%
<!-- <CSS世界> 张鑫旭著 --> 相对简单而单纯的height:auto height:auto比width:auto简单的多,原因在于: CSS默认流是水平方向的, ...
- Electron: 从零开始写一个记事本app
Electron介绍 简单来说,Electron就是可以让你用Javascript.HTML.CSS来编写运行于Windows.macOS.Linux系统之上的桌面应用的库.本文的目的是通过使用Ele ...
- axios的封装
function axios(options){ var promise = new Promise((resolve,reject)=>{ var xhr = null; if(window. ...