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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-25 16:53 编辑

                                                                                                 IO流



            标准输入输出流概述
                                                                        类字段:
                                                                        静态成员变量
                                                                        System 类的类字段
                                                                        err : 标准错误输出流. 命令行输出错误信息
                                                                        是PrintStream,  OutputStream 的子类, 属于字节输出流.
                                                                        in : 标准输入流. 键盘输入
                                                                        是 InputStream 类, 属于字节输入流.  InputStream in = System.in;
                                                                        out : 标准输出流. 将数据输出到控制台
                                                                        是PrintStream,  OutputStream 的子类, 属于字节输出流. OutputStream out = System.out;                        
                                                                                                
                                                                        OutputStreamWriter概述和使用: 文件内容打印到控制台
                                                                        OutputStreamWriter 类:
                                                                        是 Writer 的子类, 属于字符输出流. 是字符流通向字节流的桥梁
                                                                        作用: 以写出字符流的方式编写代码(char, char[], String), 而底层以字节流写出到文件(byte, byte[])        // 转换的作用


                                                                        
  
                                InputStreamReader的概述和使用: 控制台录入到文件
                                                        InputStreamReader 类
                                                        是 Reader 的子类, 属于字符输入流. 是字节流通向字符流的桥梁
                                                        作用: 以读取字符流的方式编写代码(char, char[], String), 而底层以字节流读取(byte, byte[])
                                                


                                打印流概述
                                                        打印流分类
                                                        PrintStream : 字节打印流
                                                        PrintWriter : 字符打印流, 我们学的
                                                        只有输出流, 因为打印是输出操作


                            打印流特有功能
                                                        PrintWriter类
                                                        构造方法
                                                        PrintWriter PrintWriter(String filepath) : 创建对象
                                                        PrintWriter PrintWriter(Writer out, boolean autoFlush) : 包装字符输出流创建对象, 同时设
                                                        置是否自动刷新
                                                        PrintWriter(OutputStream out, boolean autoFlush) : 包装字节输出流创建对象, 同时设置是否
                                                        自动刷新
                                                        成员方法
                                                        void write(String s) : 写一个字符串
                                                        void print(String s) : 输出字符串, 没有换行
                                                        void println(String s) : 输出字符串并换行. 如果启动了自动刷新, 则会执行自动刷新写入数据
                                                        void printf(Locale l, String format, Object... args) : 使用指定格式字符串和参数将格式化
                                                        的字符串写入输出流. 如果启动了自动刷新, 则会执行自动刷新写入数据
                                                        void format(Locale l, String format, Object... args) : 使用指定格式字符串和参数将格式化
                                                        的字符串写入输出流. 如果启动了自动刷新, 则会执行自动刷新写入数据
                                                     
                                                                Object readObject() : 从对象输入流读取对象, 一次只读取一个对象. 当读不到时抛出
                                                                EOFException .
                                                                ObjectOutputStream
                                                                构造方法
                                                                ObjectOutputStream(OutputStream out) : 创建对象输出流
                                                                成员方法
                                                                void writeObject(Object o) : 将对象写入对象输出流
                                                         
                                                               
                                                        
                                                        


                       对象操作流概述
                                                        对象操作流 (都属于字节流)
                                                        ObjectInputStream
                                                        构造方法
                                                        ObjectInputStream(InputStream in) : 创建对象输入流
                                                        成员方法
                                                        Object readObject() : 从对象输入流读取对象, 一次只读取一个对象. 当读不到时抛出
                                                        EOFException .
                                                        ObjectOutputStream
                                                        构造方法
                                                        ObjectOutputStream(OutputStream out) : 创建对象输出流
                                                        成员方法
                                                        void writeObject(Object o) : 将对象写入对象输出流


                                java.io.Serializable 接口:


                                                        没有成员, 是一个标识接口
                                                        用于序列化
                                                        序列化: 将对象的信息转换为可存储的信息的过程


                                Properties概述
                                                          Properties概述
                                                        java.util.Properties
                                                        构造方法
                                                        Properties() : 创建对象
                                                        成员方法
                                                        可以使用Map接口的方法
                                                        String getProperty(String key) : 根据键获取值. 如果找不到该键, 则返回null
                                                        String getProperty(String key, String defaultValue) : 根据键获取值, 如果值不存在, 则使用
                                                        指定的默认值
                                                        void setProperty(String key, String value) : 设置键值对
                                                        继承了 Hashtable<K, V> , 实现 Map<K,V> 接口, 以键值对方式存储数据
                                                        


                                                        Properties和IO流结合的功能
                                                        Properties类常用方法
                                                        从配置文件中加载到Properties集合
                                                        void load(InputStream in) : 从字节输入流中读取Properties
                                                        void load(Reader reader) : 同上, 只是流不同
                                                        从Properties集合写出到配置文件
                                                        void list(PrintStream out) : 将Properties输出到指定的字节打印输出流.
                                                        会自动加一个 -- listing properties -- 文件头
                                                        void list(PrintWriter writer) : 同上, 只是流不同
                                                        会自动加一个 -- listing properties -- 文件头
                                                        void store(Writer writer, String comments) : 将Properties输出到指定的输出流, 并添加一个
                                                        注释. 如不想增加注释可填写null.
                                                        无论是否有注释, 都会自动添加时间字符串
                                                        void store(OutputStream os, String comments) : 同上, 只是流不同
                                                        无论是否有注释, 都会自动添加时间字符
                                                        list() 和 store() 的区别
                                                        list只能接收打印流(PrintStream, PrintWriter)
                                                        store可以接收任何输出流(OutputStream, Writer)
            
                                       

                                       

                                
                                        Java中字符串的编码
                                                编码:
                                                是字节(byte)转换为字符(char)过程中的操作, 读写文本数据, 都要查询编码表
                                                编码表:
                                                保存数字和字符对应关系的表, 也称为 字符集(charset)
                                                Java中的字符串的默认编码
                                                ANSI 编码, 即当前系统是什么编码就是什么编码
                                                String类中常用方法
                                                构造方法
                                                String(byte[] bytes) : 将byte数组转化为字符串, 使用默认编码
                                                String(byte[] bytes, String charsetName) : 将byte数组转换为字符串, 使用指定编码
                                                String(byte[] bytes, int offset, int len, String charsetName) : 使用指定编码, 将byte数组
                                                的一部分转换为字符串
                                                成员方法
                                                byte[] getBytes() : 获取字符串的byte数组, 使用默认编码
                                                byte[] getBytes(String charsetName) : 获取字符串的byte数组, 使用指定编码
                                             
                                                                  
                                                                                                     多线程
                                      
                进程:当前正在运行的程序,一个应用程序在内存中的执行区域
                线程:进程中的一个执行控制单元,执行路径
                一个进程可以有一个线程也可以有多个线程
                单线程:安全性高,但是效率低(同一时间只做一件事)
               
                多线程安全性低,效率高(同一时间做很多事)
                并发:并行发生,同时发生多线程就可以实现并发
                同步:sync 不是同时的意思,同步是指一步接一步的执行 一步执行完在执行下一步 单线程就是同步
               
                异步:  async 不是一步一步执行,而是同时执行多步 多线程就是异步
                多线程的实现方式:
                 创建线程的第一种方式: 继承Thread类
                        java.lang.Thread 类: 实现了 Runnable 接口
                        构造方法
                        Thread Thread() : 创建Thead对象
                        Thread Thread(Runnable r) : 通过Runnable对象创建Thread对象
                        Thread Thread(Runnable r, String threadName) : 通过Runnable对象创建Thread对象并指定线
                        程名
                        成员方法
                        void run() : 用于让子类重写, 表示该线程要执行的任务. 不能直接调用
                        void start() : 启动线程, 即让线程开始执行 run() 方法中的代码
                        String getName() : 获取线程的名称
                        void setName(String name) : 设置线程名称
                        静态方法
                        static Thread currentThread() : 返回对当前正在执行的线程对象的引用
                        static void sleep(long millis) : 让所在线程睡眠指定的毫秒
                       
                  
               
                创建线程的第二种方式: 实现Runnable接口
                  
                                
                                多线程中的线程安全问题: 使用同步代码块解决共享资源的问题
                                        同步:   使用 synchronized 关键字:
                                         格式:         synchronized (锁对象) {
                                                                // 要同步执行的代码
                        
                                }   
                                             
                        
                        同步方法:
                                        synchronized 修饰的方法
                                       
                                                                              网络编程


                                                        netstat -an 命令查看端口号                                                                        Ip地址:InetAddress               
                                                          静态用类名调用               
                                                        1. 为发送端创建Socket对象(DatagramSocket)               
                                                          DatagramSocket datagramSocket = new DatagramSocket();               
                                                    // 2. 创建数据并打包                 
                                                          DatagramPacket datagramPacket = new DatagramPacket(byte数组, 数组长度,                                                                               InetAddress对象, 端口号);               
                                                    // 3. 发送数据                datagramSocket.send(datagramPacket);               
                                                    // 4. 释放资源                datagramSocket.close();                              
                                                    // 1. 创建客户端Socket对象(建立连接)                     
                                                         Socket socket = new Socket(InetAddress地址, 端口号);                        
                                                   // 2. 获取输出流对象                       
                                                          OutputStream outputStream = socket.getOutputStream();                        
                                                  // 3. 发送数据                        outputStream.write(byte数组);                       
                                                  // 4. 释放资源                        socket.close();                       
                                                // 1. 创建服务端ServerSocket对象:                 
                                                      创建服务端ServerSocket对象                        
                                                        ServerSocket serverSocket = new ServerSocket(端口号);  // 指定要监听的端口号                                                                    // 2. 监听数据                       
                                                        Socket socket = serverSocket.accept();                // 该方法会阻塞, 直到有客户端连接                                                             // 3. 获取输入流对象                        
                                                          InputStream inputStream = socket.getInputStream();                                                                                                        // 4. 获取数据                        int dataLength = inputStream.read(装数据的byte[]数组);                                                                                                                            String s = new String(byte[], 0, dataLength);                       
                                             //    5. 输出数据                        
                                                         System.out.println(s);                        
                                             // 6. 释放资源:                        
                                                        socket.close();                        serverSocket.close();   
                                                                                         反射
                                         反射:在运行时,我们可以获取任意一个类的所有方法和属性                           
                                                 在运行时,让我们调用任意一个对象的所有方法和属性                                 
                                       
                        
                                       
              
                                                  
                                    
                                                获取构造方法                                       
                                                                  Constructor<?>[] getConstructors() : 以数组形式返回该类中所有public的构造方法.
                                                                      如果没有public的, 则数组长度为0                                       
                                                                  Constructor<?>[] getDeclaredConstructors() : 以数组形式返回该类中所有权限的构造方                                                                               法, 包括private的. 如果该类是接口, 基本类型, 数组, void, 则数组长度为0                                                                                 Constructor<T> getConstructor(Class<?>... parameterTypes) : 根据参数列表返回指定                                                                                 的public的构造方法. 参数列表填写参数的字节码对象                                                                                                             Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) : 根据参数列                                                                                表返回指定的所有权限的构造方法, 包括private的. 参数列表填写参数的字节码对象                                                创建对象                                       
                                                                  T newInstance() : 使用该类的无参构造创建一个对象                                                                                                                              java.lang.reflect.Constructor 类: 构造方法对象                                        T                                                                                        newInstance() : 通过无参构造方法对象创建一个类的对象                                        T                                                                          newInstance(Object... initargs) : 通过有参构造方法对象创建一个类的对象, 传入构造方                                                                                                       法所需的参数列表                                       
                                                        void setAccessible(boolean canAccess) : 设置为true时禁用Java的访问安全检查, 可以访问所有                                                                                                         权限的构造方法                                       
                                               
              
                                                                      反射获取public成员变量: 设置和获取值                                       
                                       java.lang.Class 类中的获取成员变量的方法:                                       
                                                              Field[] getFields() : 获取所有public的成员变量                                       
                                                              Field[] getDeclaredFields() : 获取所有权限的成员变量, 包括private的                                                                                                 Field getField(String fieldName) : 通过指定的成员变量名获取指定的public的成员变量                                                                    Field getDeclaredField(String fieldName) : 通过指定的成员变量名获取指定的所有权限的成                                                                     员变量包括private的                                       
                                   java.lang.reflect.Field 类: 成员变量对象                                       
                                                             Object get(Object obj) : 获取指定对象的属性值. 传入对象, 返回该对象的属性值                                                                    void set(Object obj, Object value) : 将指定对象的属性值设置为指定的值. 传入对象和属性值                                                            void setAccessible(boolean canAccess) : 设置为true时禁用Java的访问安全检查, 可以访问所有权限                                                                                                       的成员属性                                                        
                                   反射获取私有成员变量并修改                              
                                                            
                           
                                                            
                           
                                          
                        
                                                             获取成员方法                                
                                                                      Method[] getMethods() : 返回所有public的方法数组                              
                                                                      Method[] getDeclaredMethods() : 返回所有权限的方法数组                                                                                                             Method getMethod(String name, Class<?>... parameterTypes) : 获取public的方法,                                                                          传入方法名和方法形参字节码对象                              
                                                                     Method getDeclaredMethod(String name, Class<?>... parameterTypes) : 获取所有                                                                         权限的指定方法传入方法名和方法形参字节码对象                                                                                                java.lang.reflect.Method 类: 成员方法对象                                
                                                                  Object invoke(Object obj, Object... args) : 调用指定对象的成员方法               
                                        获取class字节码的三种方式:                             
                                                                    1.对象.newInstance() -- getclass()                                 
                                                                    2.类名.class对象                                 
                                                                    3.class对象.forname("com.itheimao1.student")               
                                        JavaBean:                              
                                                                    概念: 就是一个类                              
                                                                    作用: 封装数据                              
                                                                    规范: 类必须是public修饰
                                                                            通过private的成员变量保存数据                                
                                                                            通过public的get/set方法操作数据                                
                                                                            至少提供一个无参构造方法                                
                                                                            实现Serializable接口(用于使用IO流传输对象到文件或网络)                                                                       BeanUtils概述和jar包                                                                                
                                                                   作用:                                       
                                                                        利用反射技术给一个类的对象的成员属性赋值或获取值, 用于快速封装数据到JavaBean                                        }                                        }                                       
                                                                  使用BeanUtils所需jar包                                       
                                                                                 commons-beanutils                                       
                                                                                 commons-logging                                       
                                   BeanUtils的常用方法                                       
                                                                        org.apache.commons.beanutils.BeanUtils 类                                
                                                    常用静态方法                                       
                                                                   static void setProperty(Object bean, String name, Object value) : 给对象的成员属性                                                                                         赋值传入对象, 成员属性名, 属性值                                       
                                                                   static String getProperty(Object bean, String name) : 获取对象成员属性值. 传入对象,                                                                                         成员 属性名, 返回属性值的字符串形式                                       
                                                                   static void populate(Object bean, Map properties) : 批量给对象的成员属性赋值, 传入                                                                                       对象Map的key是属性名, value是属性值                                                                                       
                                  自定义BeanUtils的赋值和获取方法实现                                                
                                                    我们自己定义就直接通过反射操作Field即可                                                                                                                                               
                                                    私有构造方法                                               
                                                     定义2个静态方法                                                
                                                             static void setProperty(Object bean, String name, Object value)                                                                                                    static String getProperty(Object bean, String name)                        
                                                    beanutils:Apache commons提供的一个组件,主要功能就是为了简化javabean封装数据的操作                                                                               不是直接操作成员变量,而是操作和成员变量名有关的get和set方法                                   
                                                               



0 个回复

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