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

    参考资料

  • 相关阅读:
    计算机术语
    【转】 物理内存和线性空间
    windows Visual Studio 上安装 CUDA【转载】
    windows Notepad++ 上配置 vs 编译器 , 编译并运行
    单列模式 [转载]
    Java Swing布局管理器GridBagLayout的使用示例 [转]
    五年java工作应具备的技能
    三年java软件工程师应有的技技能
    京东面试题 Java相关
    京东笔试题总结
  • 原文地址:https://www.cnblogs.com/20165324hcj/p/8682496.html
Copyright © 2011-2022 走看看