学号 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解决方案:
- 使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
- 匿名内部类中是不能定义构造函数的。
- 匿名内部类中不能存在任何的静态成员变量和静态方法。
- 匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
- 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。
问题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);
}
}
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4000行 | 30篇 | 400小时 | |
第五周 | 3870 | 77/7 | 10 | linux学习 |
·