Java学习总结(七)

本周学习内容:

IO框架

  1. 流的划分
    流的概念:内存与存储设备之间传输数据的通道
    (1)按方向【重点】:
    输入流:将存储设备中的内容读入到内存中
    输出流:将内存中的内容写入到存储设备中
    (2)按单位:
    字节流:以字节为单位,可以读写所有数据
    字符流:以字符为单位,只能读写文本数据
    (3)按功能:
    节点流:具有实际传输数据的读写功能
    过滤流:在节点流的基础上增强功能
  2. 字节流
    (1)字节流的父类(抽象类):
    InputStream : 字节输入流—read方法
    OutputStream : 字节输出流—write方法
    (2)字节节点流:
    FileInputStream
    FileOutputStream
    (3)字节过滤流:
    缓冲流:BufferedOutputStream/BufferedInputStream
    作用:提高IO效率,减少访问硬盘的次数
    flush是将缓存区的内容写入文件
    对象流:ObjectOutputStream/ObjectInputStream
    增强了缓冲区的功能
    增强了读写8种基本数据类型和字符串功能
    增强了读写的功能:readObject(),从流中读取一个对象
    WriteObject(Object obj)向流中写入一个对象
    (4)对象序列化
    对象序列化的细节:
    必须实现Serializable接口
    必须保证其所有属性均可序列化
    Transient修饰临时属性,不参与序列化
    读取到文件尾部的标志:java.io.EOFExecption
  3. 字符编码
    UTF-8 针对Unicode的可变长度字符编码
    GBK 简体中文、扩充
    确保输出流,输入流的编码一致
  4. 字符流
    (1)字符流的父类(抽象类)
    Reader:字符输入流——read方法
    Writer:字符输入流——wirter方法
    (2)字符节点流
    FileWriter:writer ( String str )
    FileReader: read ( char[ ] c ) 从流中读取多个字符,将读取到的内容存入c数组,返回实际读到的字符数;如果读到文件尾部,则返回-1
    (3)字符过滤流
    缓冲流:BufferedWriter/BufferedReader
    特点:支持输入换行符;可一次写一行、读一行(不过每一次换行,都需要调用newLine())
    PrintWriter: 封装了print()/ println( ) 方法,支持写入后换行
    (4)字符节点流
    桥转换流:InputStreamReader / OutputStreamWriter
    可将字节流转换为字符流
    可设置字符的编码方式
    使用步骤:
    创建节点流
    OutputStream os = new FileOutputStream(“Files//conver.txt”);
    InputStream is = new FileInputStream(“Files//conver.txt”);
    [创建过滤流 设置字符编码集]
    OutputStreamWriter osw = new OutputStreamWriter(os,“UTF-8”);
    InputStreamReader isr = new InputStreamReader(is,“UTF-8”);
    封装过滤流
    PrintWriter pw = new PrintWriter(osw);
    BufferedReader br = new BufferedReader(isr);
    读写数据
    pw.println(“今天天气非常好”);
    pw.println(“你好Jasva”);
    pw.flush();
    关闭流
    pw.close();
  5. file类
    (1)概念:带表物理盘符中的一个文件或者文件夹
    (2) 方法:getAbsolutePath() , 获取绝对路径
    getParent() , 获取文件目录所在的目录
    isDirectory() , 是否是目录
    (3) FileFilter接口
    对获取的文件进行过滤

网络编程

  1. 网络
    由点和线构成,表示诸多对象间的相互联系
  2. 计算机网络:
    为实现资源共享和信息传递,通过通信线路连接起来的若干主机(Host)
    互联网:Internet)点与点相连
    万维网:(WWW – World Wide Web)端与端相连
    物联网:(IoT – Interent of things)物与物相连
  3. 网络编程:
    让计算机与计算机之间建立连接、进行通信
    网络模型:
    OSI (Oper Systerm Interconnection) 开放式系统互联
    TCP/UDP
    TCP协议:Transmission Control Protocol
  4. 传输控制协议
    是一种面向连接的、可靠的、基于字节流的传输层通信协议。数据大小无限制。建立连接的过程需要三次握手,断开连接的过程需要四次挥手。
    UDP协议:User Datagram Protocol
  5. 用户数据报协议
    是一种无线连接的传输层协议,提供面向事务发的简单不可靠信息传送服务,每个包的大小64KB
  6. IP
    IP协议:Internet Protocol Address 互联网协议地址/网际协议地址(分配给互联网设备的数字标签,唯一标识)
    IP地址分类
    IPV4:4字节32位整数
    IPV6:16字节128位整数
    IPV4分类:
    B类:中型企业,128.0.0.1 ~ 191.255.255.254
    C类:个人用户,192.0.0.1 ~ 223.255.255.254
    回环地址:127.0.0.1 指本机,一般用于测试
    查看IP地址命令:ipconfig
    测试IP命令:ping D.D.D.D
    port
  7. 端口
    端口号:在通信实体上进行网络通信的程序的唯一标识
    端口的分类:
    公认端口:0 ~ 1023
    注册端口:1024 ~ 49151
    动态或私有端口:49152 ~ 65535
    常用端口:
    MySql: 3306
    Oracle: 1521
    Tomcat: 8080
    SMTP : 25
    Web服务器:80
    FTP服务器:21
  8. InetAddress类
    概念:表示互联网协议(IP)地址对象,封装了与该IP地址相关的所有信息,并提供获取信息的常用方法
    方法:
    public static InetAddress getLocalHose( )获取本地主机地址对象
    public static InerAddress getByName(String host)根据主机名称获得地址对象
    public static InetAdress[] getAllByName(String host)
    获得所有相关地址对象
    public String getHostAddress()获取IP地址字符串
    public String getHostName() 获取IP地址主机名
  9. 基于TCP的网络编程
    Socket(套接字)是网络中的一个通信节点
    分为客户端Socket与服务器SeverSocket
    通信要求:IP地址 + 端口号
    开发步骤:
    建立通信连接(回话):
    创建ServeeSocket,指定端口号
    调用accept等待客户端接入
    客户端请求服务器:
    创建Socket,指定服务器IP+端口号
    使用输出流,发送请求数据给服务器
    使用输入流,接受响应数据到客户端(等待)
    服务器响应客户端:
    使用输入流,接受请求数据到服务器(等待)
    使用输出流,发送响应数据给客户端

反射

  1. 类对象
    基于某个类new出来的对象,也称为实例对象
    类对象:类加载的产物,封装了一个类的所有信息(类名、父类、接口、属性、方法、构造方法)
    模板类 Class
    获取类对象
    通过类的对象,获取类对象
    Student s = new Student();
    Class c = s.getClass();
    通过类名获取类对象
    Class c = 类名.class
    通过静态方法获取类对象
    Class c = Class.forName(“包名.类名”);
    常用方法:
    public String getName( )
    public Package getPackage( )
    public Class <? Super T>getSuperfaces( )
    public Class<?>[ ] getInterfaces( )
    public Field[ ] getFields( )
    public Method[ ] getMethods( )
    public Constructor<?>[ ] getConstructors( )
    public T newInstance( )
  2. 工厂设计模式
    开发中有一个非常重要的原则“开闭原则”,对扩展开放,对修改关闭
    工厂模式主要负责对象创建的问题
    可通过反射进行工厂模式的设计,完成动态的对象创建
    单例模式:
    只允许创建一个该类的对象
    饿汉式:
    天生线程安全,类加载时创建(不用时也创建,占用资源)
    懒汉式:
    使用时创建、天生线程不安全(加同步锁);效率低
    使用时创建,天生线程安全

JDK8

  1. Lambda
    概念:允许把函数作为一个方法的参数(函数作为参数传递到方法中)
    <函数式接口> <变量名>= (参数1,参数2)->{
    方法体
    }
    注意事项
    新的操作符 ->(箭头操作符)
    (参数1,参数2)->表示参数列表
    ->( ){ } 方法体
    形参列表的数据类型会自动推断
    如果形参列表为空,只需保留()
    如果形参列表只有一个,且无返回值,只需参数名字即可
    如果执行语句只有一句,且无返回值,{}可以省略
    若有返回值,仍想省略{},return也可省略。保留执行语句只有一句
    Lambda表达式不会生成单独的内部文件
    Lambda访问局部变量时,变量要修饰符final,如果没有,会自动添加
  2. 函数式接口
    如果一个接口只有一个抽象方法,则该接口称为函数式接口
    为了确保接口达到要求,可以添加@FunctionalInterface注解
    内置四个核心函数式接口:
    Consumer 消费型接口 void accept(T t);
    Supplier 供给型接口 T get();
    Function<T,R> 函数型接口 R apply(T t)
    Predicate 断言型接口 Boolean test(T t)
  3. 方法引用
    方法引用是Lambda表达式的一种简写形式,如果Lambda表达式方法体中只是调用一个特定的已存在的方法,则可以使用方法引用
    使用 ::操作符将对象或类和方法名的名字分隔开来
    对象::实例方法
    类::静态方法
    类::实例方法
    类::new
    注意:调用的方法参数列表与返回值类型,要与函数型接口中的方法参数列表与返回值类型一致
发布了33 篇原创文章 · 获赞 3 · 访问量 898

猜你喜欢

转载自blog.csdn.net/qq_44952731/article/details/105018658