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"); //发生异常,转向catcht = 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)创建文件时,该文件被认为与当前应用程序在同一目录中
  • 文件字节输入流
    • 使用输入流通常包括4个基本步骤

      • 设定输入流的源
      • 创建指向源的输入流
      • 让输入流读取源中的数据
      • 关闭输入流:in.close();
    • 构造方法
      • FileInputStream(String name);
      • FileInputStream(File file);
    • 文件字节流可以调用从父类继承的read方法顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取文件中的其余内容,直到文件的末尾或文件字节输入流被关闭。
    • 例:
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个字节写到目的地。
    • 例:
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版)]

转载于:https://www.cnblogs.com/zxy20175227/p/10665263.html

20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结相关推荐

  1. 2018-2019-2 20175227张雪莹《Java程序设计》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验四 <Android程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...

  2. 2018-2019-2 20175227张雪莹《Java程序设计》 实验二《Java面向对象程序设计》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...

  3. 2018-2019-2 20175227张雪莹《Java程序设计》实验四 《Android程序设计》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验四 <Android程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...

  4. 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号: ...

  5. 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验五 <网络编程与安全> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:20 ...

  6. 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉

    2018-2019-2 20175227张雪莹<Java程序设计> 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:2017 ...

  7. 20175227张雪莹 2018-2019-2 《Java程序设计》第十一周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第十一周学习总结 教材学习内容总结 第十三章 Java网络编程 URL类 一个URL对象通常包含最基本的三部分信息:协议 ...

  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第五周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 第六章接口与实现 接口 接口体中所有的常量访问权限一定是public和static(可 ...

  9. 20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章 泛型与集合框架 泛型:主要目的是可以建立具有类型安全的集合框架,如链表.散列 ...

最新文章

  1. 如何打开.npz文件
  2. Laya 位图字体制作(失败...)
  3. java swing 一闪而过_Java代码,为什么图形会一闪而过,怎么修改?
  4. Redis流量控制策略
  5. MySQL笔记-解决Can't connect to local MySQL server through socket '/xx/xx/mysql.sock' (111)及(2)
  6. Unity网络--HLAPI(1):服务器客户端变量同步,脏标识以及定制特性SyncVar
  7. Mouse Detected Problem
  8. grafana 批量添加图表
  9. catia车灯设计——一些设置
  10. 编程中,有哪些好的习惯从一开始就值得坚持?
  11. 金仓数据库KingbaseES数据库概念(六)--数据库对象管理
  12. leetcode:94. 二叉树的中序遍历
  13. 并发编程之:Atomic
  14. Python—基础篇(三)
  15. Autodesk 2013 免费下载 及所有产品product Key(产品密匙)
  16. html div中css设置平均水平分布,CSS - 水平和垂直分布div
  17. 《庖丁解牛Linux内核》笔记之:汇编基础
  18. Chromium安装flash插件
  19. Android 蓝牙 A2dp 听歌卡音?audio数据到a2dp通道流程解析----A2dp流控原理(Acl Flow Control),一文搞懂蓝牙卡音问题处理
  20. 汉王文本王OCR识别注意事项

热门文章

  1. 独立正交不相关定义关系
  2. 客服常用话术大全,赶紧收藏起来吧!
  3. 超级简单,一步彻底关闭360浏览器低俗广告
  4. 凭借渠道优势穿越风险?科大讯飞探索AI新应用场景
  5. 燕十八 php经典,燕十八PHP传世经典第1部视频教程(后半部分)_PHP教程
  6. 某些在线点播视频的地址格式
  7. matlab mex入门简介
  8. Java:一个API文档框架Swagger
  9. gooooood bye 2014---gooooooooooood luck 2015
  10. Java GUI基础