A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-1-5 09:31 编辑

                IO流---反射 笔记       
  day9
           第一章  File类
    File:文件和目录文件下的抽象表达形式。File类的实例是不可变的。
     File(String pathname):将一个字符串路径封装成File对象
     File(String parent, String child):传入一个父级路径和子类路径。
     File(File parent,String child):传入一个File类型的父级路径和子级路径。
     File的常用功能:
       创建功能:boolean creatNewFile  创建新的文件
                 boolean mkdir 当指定的单机文件夹不存在时创建文件。
                 boolean mkdirs当指定的多级文件夹某一级文件夹不存在时,创建多级文件。
       删除功能:boolean delete:删除文件或删除单机文件夹。
       获取功能:File getAbsoluteFile() :返回当前File对象所有指向的绝对路径
                  String getAbsolutePath() :返回File对象所指向的绝对路径。
                  String getParent()获取当前路径的父级路径,以字符串形式返回该父级路径  
                  File getParentFile() 获取当前路径的父级路径,以字File对象形式返回该父级路径
                  String getName() :获取文件或文件夹的名称
                  String getPath()  获取File对象中封装的路径
                  long lastModified():以毫秒值的形式返回最终修改时间。
                  long length() :返回文件的字节数。
       判断功能:boolean exists:判断指定路径的文件或文件夹是否存在
                 boolean isDirectory:判断当前的目录是否存在
                 boolean isFile:判断当前路径是否是一个文件
                 boolean isHidden:判断当前路径是否是隐藏文件
      修改名字功能:  boolean renameTo(File dest): 将当前File对象所指向的路径
                    修改为 指定File所指向的路径
      绝对路径:固定不可变的路径,以盘符开头。
      相对路径:相对某个参照物,不能以盘符开头。
                在eclipse中相对路径相对当前项目的根目录。
      注意:删除一个文件夹,这个文件夹下面不能有其他的文件或文件夹。
      删除指定的目录(包含子目录)
      String[] list():以字符串数组的形式返回当前路径下所有的文件和文件夹的名称
      File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称
      static File[] listRoots():获取计算机中所有的盘符
          第2章  字符流与字节流
       IO流分类:
     流向
      输入流: 读取数据  
      输出流:  写出数据
    数据类型:
       字节流:字节输入流:
               字节输出流:
      字符流:
               字符输入流:InputStream
               字符输出流:OutputStream


标准输出输入流: public static finalInputStram in.用来读取键盘录入的数据
public static final int x;
                                                         将数据000.0
list 和store 区别


              day10  IO流
    第1章标  准输入流 & 转换流 & 打印流
1.1标准输入输出流
          public static final InputStream in:标准输入流’
          public static final PrintStream out:标准输出流
     1.2 OutputStreamWriter:将字节输出流转换为字符输出流
    1 .3  InputStreamReader:将字节输入流转换为字符输入流
   1.3 打印流
       字符打印流        PrintWriter
          void print(String str): 输出任意类型的数据,
          void println(String str): 输出任意类型的数据,自动写入换行操
                  第二章  对象操作流
     字符打印流        PrintWriter
           void print(String str): 输出任意类型的数据,
           void println(String str): 输出任意类型的数据,自动写入换行操


                 第3章   Properties集合
       Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。
                  属性列表中每个键及其对应值都是一个字符串。
         特点:
           1、Hashtable的子类,map集合中的方法都可以用。
           2、该集合没有泛型。键值都是字符串。
           3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以
              存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
4、有和流技术相结合的方法。
       Properties和IO流结合的功能:
                        void load(Reader reader)
                        
                        void list(PrintWriter out)
                        void store(Writer writer, String comments)


                第四章  编码表
    乱码:编码保持前后一致即可解决


               day11  多线程
多线程:
      线程; thread 进程中的一个执行控制单元,执行路径。
      进程:process 一个应用程序在内存中的执行区域。
        一个进程可以有多个线程。也可以有一个。
        单线程:安全性高,但是效率低。
        多线程:安全性低,效率高。
     多线程的实现方式:
        方式1:一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的
              run 方法。接下来可以分配并启动该子类的实例
实现Runnable接口
        创建线程的步骤;
           定义类实现Runnable接口;
           覆盖接口中的run方法;
           创建Thread类的对象;
           将Runnable接口的子类对象作为参数传递给Thread类的构造函数;
           调用Thread类的start方法开启线程;
  第三章  多线程安全问题产生及解决方案
   
安全问题解决
     1.使用同步代码块解决;
        问题出现的原因:要有多个线程;
                        要有被多个线程所共享的数据;
                        多个线程并发的访问共享的数据。
      
    synchronized:同步(锁)可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,
           则直接锁住,其他的线程将无法访问
          同步代码块:
              synchronized(锁对象){
                        }
    注意:锁对象需要被所有的线程所共享
  同步:安全性高,效率低
  非同步:效率高,但是安全性低
    静态的同步方法的锁对象是当前类的字节码对象。
    非静态同步方法的锁对象是当前类的字节码对象。

                  day12
     
      网络通信三要素:
            传输协议
            IP地址
            端口号:   
      UDP:USER DATAGRAM PROTOCOL, 用户数据报协议.
         特点:
           无连接的不可靠协议
           数据传输大小限制为64K(一个包)
           不需要建立连接即可传输
           数据发送速度快, 发送方只发送数据, 不检查接收方是否真正接收到数据, 所以数据可能有丢包的情况
      
    TCP: TRANSMISSION CONTROL PROTOCOL, 传输控制协议
          特点:
            需要建立连接的可靠协议
            没有数据传输大小的限制
            在传输前需要先建立连接(三次握手)
            它的重发机制保证了数据传输的准确性, 但因为需要接收方发回验证信息, 所以数据发送时间长, 数据流量大
                    
                day13
      第一章  反射

   1.1.2字节码文件获取的三种方式
1.对象名.getCalss();
2.类名.class        
3.Class.forName(“com.itheima_01.Student”)
反射:
          在运行时,我们可以获取任意一个类的所有方法和属性
          在运行时,让我们调用任意一个对象的所有方法和属性
  反射的前提:
          要获取类的对象(Class对象)
1.2.1通过获取的构造创建对象
步骤:
1.获得Class对象
2获得构造
3.通过构造对象获得实例化对象
1.3.1反射public成员变量(字段)
通过反射运行public变量流程
1. 通过反射获取该类的字节码对象
    Class clazz = Class.forName("com.heima.Person");
    2. 创建该类对象
     Object p = clazz.newInstance();
     3. 获取该类中需要操作的字段(成员变量)
     getField(String name) --> 方法传入字段的名称.
     注意: 此方法只能获取公共的字段
     Field f = clazz.getField("age");
     4. 通过字段对象中的方法修改属性值
     void set(Object obj, Object value)
     f.set(p, 23);
    Field[] getFields()--> 返回该类所有(公共)的字段
??Field getField(String name)--> 返回指定名称字段
?  Field[] getDeclaredFields()??????--> 暴力反射获取所有字段(包括私有)?
?  Field getDeclaredField(String name) --> 暴力反射获取指定名称字段

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马