学号 20175201张驰 《Java程序设计》第6周学习总结

时间:2023-12-25 12:24:37

学号 20175201张驰 《Java程序设计》第6周学习总结

教材学习内容总结

第7章

·1.Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类

·2.和某类有关的匿名类就是该类的一个子类,该子类没有明显地用类声明来定义,所以称作匿名类。

·3和某接口有关的匿名类就是实现该接口的一个类,该子类没有明显的使用类声明来定义,所以称作匿名类。

·4java的异常可以出现在方法调用过程中,即在方法调用过程中抛出异常对象,将可能出现的异常操作放在try-ctach语句的try部分,当try部分中的某个方法调用发生异常后,try部分将立刻结束执行,转向执行相对应的catch部分

·5非内部类不可以是static类

第10章

·1所有输入流类都是抽象类InputStream(字节输入流)或者是抽象类Reader(字符输入流)的子类

·2所有输出流都是抽象类OutputStream(字节输出流)或者是Writer(字符输出流)的子类

·3InputStream类是字节输入流的抽象类,是所有字节输入流的父类

·4Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类

·5OutputStream类是字节输入流的抽象类,此抽象类表示输出字节流的所有类的超类

·6Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类

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

  • 问题1:内部类和外嵌类的重要关系

  • 问题1解决方案:

    总结:

    A内部类的外嵌类的成员变量在内部类中仍然有效, 内部类中的方法也可以调用外嵌类中的方法

    B内部类的类体重不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员

    C内部类仅供他的外嵌类使用,其他类不可以用某个类的内部类声明对象。

  • 问题2:匿名类

  • 问题2解决方案:

    1. 使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
    2. 匿名内部类中是不能定义构造函数的。
    3. 匿名内部类中不能存在任何的静态成员变量和静态方法。
    4. 匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
    5. 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。
  • 问题3:FileInputStream流的read方法和FileReader流的read方法有什么不同?

  • 问题3解决方案: FileInputStream:以字节流方式读取;

FileReader:把文件转换为字符流读入;

InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String,使用InputStream读取出来的是byte数组

Reader类及其子类提供的字符流的读取char,InputStream及其子类提供字节流的读取byte,所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;InputStreamReader可以将读如stream转换成字符流方式,是reader和stream之间的桥梁

课后练习

7-3(1)大家好,祝工作顺利!

class Cry {

public void cry() {

System.out.println("大家好");

}

}

public class E {

public static void main(String args[]) {

Cry hello = new Cry() {

public void cry() {

System.out.println("大家好,祝工作顺利");

}

};

hello.cry();

}

}

(2)p是接口变量。

interface Com{

public void speak();

}

public class EE {

public static void main(String args[]) {

Com p= new Com() {

public void speak() {

System.out.println("P是接口变量");

}

};

p.speak();

}

}

(3)你好 fine thanks。

import java.io.IOException;

public class EEE {

public static void main(String args[]) {

try { methodA();

}

catch(IOException e) {

System.out.print("nihao");

return;

}

finally {

System.out.println("fine thanks");

}

}

public static void methodA() throws IOException {

throw new IOException();

}

}

(4)

4.编程题

import java.util.*;

public class E {

public static void main (String args[ ]){

  Scanner reader = new Scanner(System.in);

  double sum = 0;

   int m = 0;

   while(reader.hasNextDouble()){

       double x = reader.nextDouble();

       assert x< 100:"数据不合理";

       m = m+1;

       sum = sum+x;

   }

   System.out.printf("%d个数的和为%f\n",m,sum);

   System.out.printf("%d个数的平均值是%f\n",m,sum/m);

}

}

代码托管

学号 20175201张驰 《Java程序设计》第6周学习总结

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 30篇 400小时
第五周 3870 77/7 10 linux学习

·