zoukankan      html  css  js  c++  java
  • 20165315 第五周学习总结

    20165315 第五周学习总结

    本周学习中遇到的问题和解决过程

    • 在编写第七章例子6时,不知道如何在idea中加上-ea命令执行assert断言语句,直接运行后,结果如下:

    明显不对(分数中有负数)

    解决过程:
    经过查询网络,在一篇博客中找到了答案,运行结果如下:

    • 在编写第十章例子1时,出现了如下问题:

    解决过程: 书上代码用的文件路径是C://ch10,而由于我的电脑是mac,而且该文件放在src目录中的ch10中,所以文件路径应该是src/ch10

    • 在编写第十章例子3时,出现了如下问题:

    解决过程:
    mac电脑里并没有记事本和浏览器,不知道如何修改路径

    • 在编写第十章例子4时,出现了如下问题:

    书上的占用字节数分别为0,8,22

    解决过程:
    考虑到可能不同的电脑系统计算字节数的大小方法不同,我查询了网络,在百度知道中得知:一般情况下是汉字编码,一个汉字是占用两个字节的;但如果是在UTF-8编码(一种国际通用的一种变长编码)下,一个汉字占3个字节

    • 在编写第十章例子7时,出现了如下问题:

    解决过程:
    在码代码时漏打了一部分代码

    • 在编写第十章例子14时,出现了如下窗口,点击按钮后没有任何反应:

    解决过程:

    • 在编写第十章需要创建txt文本的文件时,系统无法自动创建txt文本,需要手动添加,但是我又不清楚如何在idea中手动添加txt文本

    解决过程:
    可以在命令行中输入touch *.txt添加txt文本,但是仍未解决如何在idea 中自动添加txt文本的问题

    学习总结

    第七章

    • 内部类:内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员
      • 声明内部类如同在类中声明方法或变量一样,一个类把内部类看作是自己的成员
      • 外嵌类的类体中可以用内部类声明的对象,作为外嵌类的成员
      • 外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法
      • 内部类的类体中不可以声明类变量和方法
      • 外嵌类和内部类在编译时,生成两个.class文件
      • 内部类可以被修饰为static内部类,非内部类不可以是static
    • 匿名类
      • 和子类有关的匿名类:Java允许我们直接使用一个类的子类的类体创建一个子类对象
      • 和接口有关的匿名类
      • 匿名类的特点
        • 可以继承和重写父类的方法
        • 一定是内部类
        • 可以访问外嵌类中的成员变量和方法,但是不能声明static成员变量和方法
        • 创建对象时要直接使用父类的构造方法
    • 异常类
      • try-catch语句
        • 如果句尾带有finally语句,则无论是否发生异常,都执行该语句;但如果执行System.exit(0);语句,则直接退出程序,不执行finally语句
      • 自定义异常类:throws关键字抛出异常类
    • 断言
      • assert关键字
      • 使用java -ea [classname]启用断言语句

    第十章

    • File类
      • 创建一个File对象的构造方法有3个:
        • File(String filename);
        • File(String directoryPath,String filename);
        • File(File f, String filename);
      • 获取文件本身的一些信息
        • public String getName() 获取文件的名字
        • public boolean canRead() 判断文件是否是可读的
        • public boolean canWrite() 判断文件是否可被写入
        • public boolean exits() 判断文件是否存在
        • public long length() 获取文件的长度(单位是字节)
        • public String getAbsolutePath() 获取文件的绝对路径
        • public String getParent() 获取文件的父目录
        • public boolean isFile() 判断文件是否是一个普通文件,而不是目录
        • public boolean isDirectroy() 判断文件是否是一个目录
        • public boolean isHidden() 判断文件是否是隐藏文件
        • public long lastModified() 获取文件最后修改的时间
      • 目录
        • 创建目录 public boolean mkdir()
        • 列出目录中的文件
          • public String[] list() 用字符串形式返回目录下的全部文件
          • public File [] listFiles() 用File对象形式返回目录下的全部文件
          • public String[] list(FilenameFilter obj) 用字符串形式返回目录下的指定类型的所有文件
          • public File [] listFiles(FilenameFilter obj) 用File对象形式返回目录下的指定类型所有文件
      • 文件的创建与删除
        • File file=new File()
      • 运行可执行文件
        • Runtime 类声明一个对象( Runtime类在java.lang包):
          Runtime ec;
        • 然后使用该类的getRuntime()静态方法创建这个对象:
          ec=Runtime.getRuntime();
    • 文件字节输入流
      • 使用输入流通常包括4个基本步骤:
        • 设定输入流的源
        • 创建指向源的输入流
        • 让输入流读取源中的数据
        • 关闭输入流
      • 构造方法:设定输入流源->
        FileInputStream(String name);
        FileInputStream(File file);
      • 使用输入流读取字节
        • int read() 读取单个字节的数据,返回字节值,如果未读出字节就返回-1。
        • int read(byte b[]) 读取b.length个字节到字节数组b中,返回实际读取的字节数。如果到达文件的末尾,则返回-1。
        • int read(byte b[], int off, int len) 读取len个字节到字节数组b中,并返回实际读取的字节数目。如果到达文件的末尾,则返回-1,参数off指定从字节数组的某个位置开始存放读取的数据
    • 文件字节输出流
      • 使用输出流通常包括4个基本步骤:
        • 给出输出流的目的地
        • 创建指向目的地的输出流
        • 让输出流把数据写入到目的地
        • 关闭输出流
      • 构造方法:
        创建指向文件的输出流->
        FileOutputStream(String name);FileOutputStream(File file);
      • 使用输出流写字节
        • void write(int n)向目的地写入单个字节
        • void write(byte b[]) 向目的地写入一个字节数组
        • void write(byte b[],int off,int len) 从字节数组中偏移量off处取len个字节写到目的地
      • 关闭流:调用close()方法
    • 缓冲流
      • BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流
        • BufferedReader(Reader in);
        • BufferedWriter (Writer out);
      • BufferedReader和BufferedWriter类读写文件
        • readLine() 读取文本行
        • write(String s,int off,int len) 把字符串s写到文件中
        • newLine(); 向文件写入一个回行符
    • 随机流
      • 构造方法
        • RandomAccessFile(String name,String mode) ;
        • RandomAccessFile(File file,String mode) ;
      • 相关方法
        • seek(long a) 定位RandomAccessFile流的读写位置
        • getFilePointer()获取流的当前读写位置
        • readLine()方法在读取含有非ASCII字符的文件时出现“乱码”现象的解决方法:
          • 读取: String str=in.readLine();
          • 用“iso-8859-1”重新编码:byte b[]=str.getBytes("iso-8859-1");
          • 使用当前机器的默认编码将字节数组转化为字符串:
            String content=new String(b);
    • 随机流
      • 构造方法:
        • RandomAccessFile(String name,String mode) ;
        • RandomAccessFile(File file,String mode) ;
      • 相关方法:
        • seek(long a) 定位RandomAccessFile流的读写位置
        • getFilePointer() 获取流的当前读写位置
      • readLine()方法在读取含有非ASCII字符的文件时出现“乱码”现象的解决方法:
        • 读取:String str=in.readLine();
        • 用“iso-8859-1”重新编码:byte b[]=str.getBytes("iso-8859-1");
        • 使用当前机器的默认编码将字节数组转化为字符串:String content=new String(b);
    • 数组流
      • 字节数组流
        • ByteArrayInputStream构造方法及常用方法
          • ByteArrayInputStream(byte[] buf);
          • ByteArrayInputStream(byte[] buf,int offset,int length);
          • public int read();顺序地从源中读出一个字节
          • public int read(byte[] b,int off,int len);顺序地从源中读出参数len指定的字节数
            -ByteArrayOutputStream流构造方法及常用方法
          • ByteArrayOutputStream();
          • ByteArrayOutputStream(int size);
          • public void write(int b); 顺序地向缓冲区写入一个字节
          • public void write(byte[] b,int off,int len); 将参数b中指定的len个字节顺序地写入缓冲区
          • public byte[] toByteArray(); 返回输出流写入到缓冲区的全部字节
      • 字符数组
        • CharArrayReaderCharArrayWriter类是字符数组流,使用字符数组作为流的源和目标
    • 数据流
      • 构造方法:
        • DataInputStream创建的数据输入流指向一个由参数in指定的底层输入流
        • DataOutputStream创建的数据输出流指向一个由参数out指定的底层输出流
    • 对象流
      • 构造方法:
        • ObjectInputStream(InputStream in)
        • ObjectOutputStream(OutputStream out)
      • 相关方法:
        • writeObject(Object obj) 将一个对象obj写入到一个文件
        • readObject() 读取一个对象到程序中
      • 序列化:一个类如果实现了Serializable接口,那么这个类创建的对象就是所谓序列化的对象
    • 序列化与对象克隆
      • 调用clone()方法
      • 对象输入流通过对象的序列化信息来得到当前对象的一个克隆
    • 使用Scanner解析文件

    1.使用默认分隔标记解析文件

    创建Scanner对象,并指向要解析的文件,例如:

    File file = new File("hello.java");
    Scanner sc = new Scanner(file); 
    

    相关方法:
    (1) next()依次返回file中的单词

    (2)hasNext()判断file最后一个单词是否已被next()方法返回

    2.使用正则表达式作为分隔标记解析文件 : 创建Scanner对象,指向要解析的文件,并使用useDelimiter方法指定正则表达式作为分隔标记,例如:

    File file = new File("hello.java");
    Scanner sc = new Scanner(file);
    sc.useDelimiter(正则表达式); 
    

    相关方法
    (1) next()依次返回file中的单词

    (2)hasNext() 判断file最后一个单词是否已被next()方法返回

    • 文件对话框

      • 构造方法JFileChooser()创建初始不可见的有模式的文件对话框。然后文件对话框调用下述2个方法:
        • showSaveDialog(Component a);
        • showOpenDialog(Component a);
    • 带进度条的输入流

      • 构造方法是
        ProgressMonitorInputStream(Conmponent c,String s,InputStream);
    • 文件锁

      • 输入、输出流读写文件时可以使用文件锁
      • RondomAccessFile创建的流在读写文件时使用文件锁的步骤如下:
        • 先使用RondomAccessFile流建立指向文件的流对象,该对象的读写属性必须是rw,例如:
          RandomAccessFile input=new RandomAccessFile("Example.java","rw");
        • input流调用方法getChannel()获得一个连接到地层文件的FileChannel对象(信道),例如
          FileChannel channel=input.getChannel();
        • 信道调用tryLock()lock()方法获得一个FileLock(文件锁)对象,这一过程也称作对文件加锁.
          例如:FileLock lock=channel.tryLock();

    代码截图

  • 相关阅读:
    PTA乙级 (*1034 有理数四则运算 (20分)(string.append()))
    Nginx反向代理部署Node.js应用配置方法
    js处理字符串的用法小结
    从零开始基于webpack搭建react全家桶
    Linux常用指令
    matplotlib作图时中文字体乱码解决办法
    大话数据结构 串
    大话数据结构 队列
    大话数据结构 栈
    大话数据结构 线性表
  • 原文地址:https://www.cnblogs.com/yh666/p/8687740.html
Copyright © 2011-2022 走看看