当前位置:网站首页 > Java基础 > 正文

java基础2篇连载



文件和IO

java基础2篇连载

File

  • File:文件 & 文件夹
  • 文件操作:创建、删除、控制
  • 文件夹操作:创建、删除、遍历

IO流

  • 概念:Input 输入,读入,Output 输出,写入
  • IO主体:内存
  • 数据源 : 提供数据的文件
  • 数据端: 接收数据的文件
  • 工具:流
    1. 字节流:继承自 InputStream / OutputStream 这两个抽象类。 FileInputStream / FileOutputStream ObjectInputStream / ObjectOutputStream
    2. 字符流:继承自 Reader / Writer 这两个抽象类。 FileReader / FileWriter
    • 缓冲流:缓冲流是一种装饰器类,目的是让原字节流、字符流新增缓冲的功能。 BufferedInputStream & BufferedOutputStream BufferedReader & BufferedWriter
    • 数据流:允许字节流直接操作基本数据类型和字符串。 DataOutputStream & DataInputStream
  • Serializable && Externalizable
    • 接口主要用于对象的序列化和反序列化。序列化是将对象的状态转换为字节流,以便可以保存到文件中或通过网络传输,而反序列化则是将字节流恢复为对象。
    • 实现 接口非常简单,只需让类实现这个接口即可
    • 用于存储到本地磁盘或网络传输的对象必须实现序列化接口Serializable,如果对象中的某些属性不想被序列化,将该属性用transient(临时的)修饰即可。另外,static成员也不会被序列化。
  • 持久化
    • 数据从内存转存到可掉电设备

为什么要实现  接口?

  1. 持久化:
    • 使对象能够被存储到文件、数据库或其他存储介质中,以便在后续使用时恢复。
  2. 网络传输:
    • 在分布式系统中,通过网络发送对象时,需要将其序列化为字节流,接收方再进行反序列化。
  3. 深度复制:
    • 可以通过序列化和反序列化来实现对象的深度复制,即创建一个对象的完全独立副本。
  4. 简化代码:
    • Java 提供了内置的序列化机制,使用  接口可以避免手动编写复杂的序列化逻辑。

XML

  • XML: eXtensible Markup Language ,可扩展标记语言
  • 应用范围:
    1. 数据存储
    2. 系统配置
    3. 数据交换

XML文档结构

  1. 文档声明
  2. DTD 约束 (可选)
  3. 文档正文
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE team SYSTEM "team.dtd"> <team> <coach> <name>张三</name> <sex>男</sex> </coach> <players> <player id="1"> <name>李四</name> <age>25</age> <height>178</height> <weight>68</weight> </player> <player id="2"> <name>王五</name> <height>185</height> <weight>70</weight> </player> </players> </team>
  4. XML元素命名规则
    • 名称可以含字母、数字以及其他的字符
    • 名称不能以数字或者标点符号开始
    • 名称不能以字符 “xml”(或者 XML、Xml)开始
    • 名称不能包含空格
    • 标签名大小写敏感

DTD: Document Type Definition

  • 作用:规范元素、属性以及元素间的关系
  • 量词:

    : 被修饰的元素可以出现0次或1次 : 被修饰的元素至少要出现1次 : 被修饰的元素可以出现任意次

<!ELEMENT team (coach,players)> <!ELEMENT coach (name,sex)> <!ELEMENT players (player+)> <!ELEMENT player (name,age?,height,weight)> <!ATTLIST player id CDATA #REQUIRED > //#REQUIRED:必须的,#IMPLIED:非必须的 <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sex (#PCDATA)> <!ELEMENT height (#PCDATA)> <!ELEMENT weight (#PCDATA)>

XML解析

  • DOM: 把整个xml文件读入内存进行解析
  • SAX:一次读一部分,分段解析

反射

  • 概念:java程序在运行时加载、使用编译期完全未知的类信息。
  • Class: class:类型修饰符 Class:是一个数据类型
  • 对比:

    Class:描述所有的类(数据类型) 共性:成员变量、构造器、成员方法

    Student:描述所有的学生 。共性:学号、姓名、学习

Java 的反射机制是 Java 语言的一项强大特性,允许程序在运行时动态地获取类的信息,包括类的属性、方法和构造函数等,并能够操作它们。反射机制可以用于许多场景,例如框架开发、动态代理、序列化与反序列化等。

反射的基本概念

  1. Class 类:Java 中每个对象都是由一个 对象来描述的。可以通过 、实例的 方法或者使用 来获取类的 对象。
  2. 获取信息:反射提供了多种方法来获取类的信息,包括:
    • 获取类的名称
    • 获取类的字段
    • 获取类的方法
    • 获取类的构造函数
  3. 访问成员:通过反射,可以动态调用方法、访问和修改字段的值。

反射的优缺点

优点
  • 灵活性:可以在运行时动态加载和操作类,增强了程序的灵活性和扩展性。
  • 框架支持:许多 Java 框架(如 Spring、Hibernate)利用反射机制来提供 DI(依赖注入)、AOP(面向切面编程)等功能。
缺点
  • 性能开销:反射机制通常比直接调用慢,因为它涉及到动态查找和类型检查。
  • 安全性:通过反射可以访问和修改私有成员,可能会破坏封装性,增加安全隐患。
  • 复杂性:反射代码相对较难理解和维护。

注解

  • 注释:说明
  • 注解:功能
  • Java 注解(Annotations)是 Java 5 引入的一种元数据机制,允许开发者在代码中添加额外的信息,这些信息可以在编译时、类加载时或者运行时被读取和处理。注解通常用于提供编译器指令、配置框架行为、生成文档等。

语法

@interface()

内置注解

  • @Override 重写
  • @SusspressWarnings 抑制警告
  • @FunctionalInterface 函数式接口(只有一个抽象方法的接口)

自定义注解

public @interface SqlProvider {    String value() default "delete from tableName";    String sql() default ""; }

四大元注解

  • 元数据:说明数据的数据
  • 元注解:说明注解的注解
  • 四大元注解
    1. @Target
    2. @Retention
    3. @Documented
    4. @Inherited


注解的用途
编译时检查:提供额外信息供编译器使用,以进行检查。
运行时处理:框架(如 Spring 和 Hibernate)利用反射处理注解,以增加灵活性和功能。
生成文档:javadoc 可以提取注解信息生成文档。

  • 上一篇: Java基础类代码
  • 下一篇: java的基础方法
  • 版权声明


    相关文章:

  • Java基础类代码2025-04-12 18:10:01
  • java核心基础全集2025-04-12 18:10:01
  • java深度基础2025-04-12 18:10:01
  • java基础学习时间2025-04-12 18:10:01
  • java基础教学232025-04-12 18:10:01
  • java的基础方法2025-04-12 18:10:01
  • java工作久了基础2025-04-12 18:10:01
  • java基础编程培训2025-04-12 18:10:01
  • java基础推荐2025-04-12 18:10:01
  • java核心技术 卷 基础知识 pdf2025-04-12 18:10:01