zoukankan      html  css  js  c++  java
  • 20165324《Java程序设计》第五周

    学号 2016-2017-2 《Java程序设计》第五周学习总结

    教材学习内容总结

    第七章:内部类与异常类

    • 内部类:java支持在类中定义另一个类,这个类为内部类,包含内部类的类称为外嵌类。
    • 理解内部类与外嵌类。
    • Java编译器生成的内部类的字节码文件为“外嵌类名$内部类名”
    • 与子类有关的匿名类:Java允许直接使用一个类的子类的类体创建一个子类对象,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。
    • 与接口有关的匿名类:Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computer接口的类去掉类声明后的类体,称为匿名类。
    • 异常类:Java允许定义方法时声明该方法调用过程中可能出现的异常,就允许方法调用过程中抛出异常对象,终止当前方法的继续执行。
    • try-catch语句:处理异常。格式如下:
    try {
        包含可能发生异常的语句
    }
    catch (ExceptionSubClass1 e) {
        发生异常后的处理
    }
    catch (ExceptionSubClass2 e) {
        发生异常后的处理
    }
    
    • 自定义异常类:编写程序时可以扩展Exception类来定义自己的异常类,然后根据程序的需要来规定哪些方法产生这样的异常。
    • throw是Java的关键字,作用是抛出异常。throws和throw是两个不同的关键字
    • 一个方法在声明时,可以使用throws关键字声明要产生的若干个异常,并在方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象。
    • 断言:一般用于程序不准备通过捕获异常来处理的错误。语法格式为: assert booleanExpression;或者为: assert booleanExpression:messageException;
    • 启用与关闭断言语句:调试程序时可以使用-ea启用断言语句如:java -ea mainClass

    第十章:输入、输出流

    • java.io包(I/O流库)提供大量的流类。输入流为:抽象类InputStream(字节输入流),抽象类Reader(字符输入流)的子类;输出流为:抽象类OutStream(字节输出流),抽象类Write(字符输出流)的子类。
    • Filel类:File类的对象主要用来获取文件本身的信息。创建一个File对象的构造方法为:
    1. File(String filename);
    2. File(String directoryPath,String filename);
    3. File(File dir,String filename);
    4. 其中,filename是文件名字,directoryPath是文件的路径,dir为一个目录。使用File(String filename)创建文件时,该文件被认为与当前应用程序在同一个目录中。
    • 文件的属性:常用File类的下列方法获取文件本身的信息。
    1. public String getName()
    2. public boolean canRead()
    3. public boolean canWrite()
    4. public boolean exists()
    5. public long length()
    6. public String getAbsolutePath():获取文件的绝对路径。
    7. public String getParent()
    8. public boolean isFile()
    9. public boolean isDirectory
    10. public boolean isDiractory
    11. public boolean isHidden()
    12. public long lastModified():获取文件最后的修改时间
    • 目录:
    1. 创建目录:File对象调用方法public boolean mkdir()创建一个目录。
    2. 如果File对象是一个目录则:public String []list()用字符串形式返回目录下的全部文件;public File[]listFiles()用File对象形式返回目录下的全部文件
    3. FilenameFilter是一个接口,该接口有一个方法:public boolean accept(File dir,String name);需要调用时在()里加上FilenameFilter obj
    • 文件的创建与删除:使用File创建一个文件对象File file=new File("c:\myletter","letter.txt");

    • 运行可执行文件

    1. 声明一个对象:Runtime ec;
    2. 创建对象:ec = Runtime.getRuntime();
    • 文件的字节输入流、文件的字节输出流及相关的写入,写出方法详见书本。
    • 文件的字符输入流、文件的字符输出流及相关的写入,写出方法详见书本。
    • 对于缓冲流的理解学习:
    import java.io.*;
    import java.util.*;
    public class Dome07 {
        public static void main(String[] args) {
            File fRead=new File("english.txt");//给出输入流的目的地
            File fWrite=new File("englishCount.txt");//给出输出流的目的地
            try {//程序必须在try-catch语句中的try块部分创建输入流,在catch处处理该异常
                Writer out=new FileWriter(fWrite);//指向目的地的输出流
                BufferedWriter bufferWriter=new BufferedWriter(out);//把文件字符输出流out作为BufferWrite流的目的地
                Reader in=new FileReader(fRead);//指向目的地的输入流
                BufferedReader bufferRead=new BufferedReader(in);//把文件字符输入流in作为BufferRead流的目的地
                String str=null;
                while((str=bufferRead.readLine())!=null) {//bufferRead调用readLine方法读取一行文本行,直至为空。
                    StringTokenizer fenxi=new StringTokenizer(str);//StringTokenizer类进行分解str,使用默认分隔标记。
                    int count=fenxi.countTokens();//调用方法,得到分析器中计数变量的值。
                    str=str+"句子中单词的个数:"+count;
                    bufferWriter.write(str);//使用write(String s,int off,int len)方法把字符串s写到englishCount.txt中
                    bufferWriter.newLine();//向文件写入回行符的方法
                }
                bufferWriter.close();//关闭上层流
                out.close();//调用close()方法关闭时,底层流会将缓存的内容写入目的地
                in=new FileReader(fWrite);//指向目的地的输入流,为了将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类创建的流称为随机流,创建的流的指向既可以作为流的源,也可以作为流的目的地
    • 随机流的常用方法详见书本。

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

    • 问题1:接口的理解P151
    • 问题1解决方案:
    abstract class MotorVehicles { //抽象类,关键字为abstract,封装了行为标准
    	abstract void brake();
    	/*抽象类只能定义常量、抽象方法。并且abstract方法必须为实例方法,
    	  实例方法是指方法类型前面不加关键字static修饰的方法*/
    }
    interface MoneyFare { //接口MoneyFare
    	void charge();    //接口中的方法,在类中必须重写
    }
    interface ControlTemperature { //接口ControlTemperature
    	void controlAirTemperature();//接口中的方法,在类中必须重写
    }
    class Bus extends MotorVehicles implements MoneyFare { //子类Bus,实现接口MoneyFare
    	void brake() { //抽象类方法的引用
    		System.out.println("公共汽车技术");
    	}
    	public void charge() { //重写接口的方法,并且访问权限必须为public
    		System.out.println("公共汽车:一元/张,不计公里数");
    	}
    }
    class Taxi extends MotorVehicles implements MoneyFare,ControlTemperature {//子类Taxi,实现接口MoneyFare,ControlTemperature
    	void brake() { //抽象类方法的引用
    		System.out.println("出租车使用技术");
    	}
    	public void charge() { //重写接口的方法,并且访问权限必须为public
    		System.out.println("出租车:2元/公里,起步价3公里");
    	}
    	public void controlAirTemperature() { //重写接口的方法,并且访问权限必须为public
    		System.out.println("出租车安装了空调");
    	}
    }
    class Cinema implements MoneyFare,ControlTemperature { //类Cinema,实现接口MoneyFare,ControlTemperature
    	public void charge() { //重写接口的方法,并且访问权限必须为public
    		System.out.println("电影院:门票,10元/张");
    	}
    	public void controlAirTemperature() { //重写接口的方法,并且访问权限必须为public
    		System.out.println("电影院安装了空调");
    	}
    }
    public class Dome03 {
    	public static void main(String args[]) {
    		Bus bus101=new Bus();//创建对象:对象的声明、分配变量。
    		Taxi buleTaxi=new Taxi();//创建对象:对象的声明、分配变量。
    		Cinema redStarCinema=new Cinema();//创建对象:对象的声明、分配变量。
    
    		MoneyFare fare;//接口回调,声明一个变量,此时fare为一个空接口
    		ControlTemperature temperature;//接口回调,声明一个变量,此时temperature为一个空接口
    
    		fare=bus101;//将上述bus101对象的引用赋值给fare接口变量
    		bus101.brake();//类所声明的方法的调用
    		fare.charge();//fare接口可以调用类实现的接口方法,即charge方法
    
    		fare=buleTaxi;//将上述buleTaxi对象的引用赋值给fare接口变量
    		temperature=buleTaxi;//将上述buleTAxi对象的引用赋值给temperature接口变量
    		buleTaxi.brake();//类所声明的方法的调用
    		fare.charge();//fare接口可以调用类实现的接口方法,即charge方法
    		temperature.controlAirTemperature();//temperature接口可以调用类实现的接口方法,即controlAirTemperature方法
    
    		fare=redStarCinema;//将上述redStarCinema对象的引用赋值给fare接口变量
    		temperature=redStarCinema;//将上述redStarCinema对象的引用赋值给temperature接口变量
    		fare.charge();//fare接口可以调用类实现的接口方法,即charge方法
    		temperature.controlAirTemperature();//temperature接口可以调用类实现的接口方法,即controlAirTemperature方法
    	}
    }
    
    

    代码托管

    本周代码只敲了四五百行...............

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 203/203 4/4 15/15
    第二周 326/529 2/6 12/27
    第三周 1000/1500 2/8 20/47
    第四周 800/2300 3/11 20/67
    第五周 500/2800 2/13 18/85

    参考资料

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/20165324hcj/p/8682496.html
Copyright © 2011-2022 走看看