栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java高级

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java高级

String字符串

String是一个类,属于引用类型。

Java程序中一切使用""引起来的内容,都是这个类的实例,称为字符串对象。

字符串定义后是一个常量,值不可更改。字符串实际上是一个字符数组。

频繁更改String类型变量的值,不要使用String对象操作字符串,效率很低又浪费内存空间。

如果要频繁更改字符串中的值,建议使用StringBuilder类或StringBuffer类。

如何创建一个字符串对象 1.使用""赋值创建
String str = "hello";

2.通过构造方法创建

常用构造方法说明
String()创建一个空字符串对象,实际创建一个空字符串数组
String(String str)创建一个指定的字符串对象,实际是创建以后形参字符串的副本
String(char[] list)创建一个指定字符数组的字符串对象
String(byte[] list)按默认编码创建一个指定字节数组的字符串对象
String(byte[] list,String charsetName)按指定的编码格式创建一个指定字节数组的字符串对象
总结
  • 在使用字符串时,如果要比较其值是否相同时,不要使用==,因为==判断的是内存地址,要使用String重写的equals方法判断。

  • String中的equals方法判断原理:将两个字符串保存到字节数组中,再岁每个字符逐一比较,全部一致则返回。

  • 在使用equals方法时,要将已知的非空字符串作为调用者。

字符串常用方法 可变字符串

String字符串对象是一个常量,在定义后其值不可改变。

如果使用String类的对象,对其频繁更新时,就会不停的创建新的对象,重新引用。

StringBuilder类

用于表示字符串的一个类,是非线程安全的,建议在单线程环境下使用,效率略高于StringBuffer。

StringBuffer类

是线程安全的,建议在多线程环境下使用。

StringBuilder和StringBuffer中的 方法作用一致,只不过StringBuffer中的方法使用了synchronized关键字修饰,表示一个同步方法,在多线程环境下不会出现问题。

构造方法
常用构造方法作用
StringBuilder()创建一个大小为16的字符数组。类似于String str="";
StringBuilder(int capacity)创建一个指定大小的字节数组
StringBuilder(String str)创建一个str长度的字符串数组后,将str添加到其中。类似于String str="初始值";
普通方法
方法作用
append(Object obj)将指定内容添加到原可变字符串对象末尾
delete(int start,int end)删除[start,end)范围内的字符
deleteCharAt(int index)删除指定索引的字符
insert(int index,Object obj)将obj添加到index位置上
replace(int start,int index)将[start,end)范围内的字符替换为str
reverse()翻转原字符串
注意
  • 以上方法都是直接操作原字符串,每个方法调用后,原字符串都会变化。

  • StringBuilder和StringBuffer中并没有重写equals方法,所以要比较两个可变字符串对象的值是否相同时,需要将可变字符串对象转换为String对象后,调用equals方法比较。

可变字符串与不可变字符串之间的转换

有些方法如getBytes()、contains()等,只能通过String调用,这时就需要进行转换。

不可变字符串转换为可变字符串

通过创建一个可变字符串对象,将不可变字符串作为参数实现转换

String str = "hello";
StringBuilder sb = new StringBuilder(str);
可变字符串转换为不可变字符串

通过调用可变字符串的toString()方法实现转换

StringBuilder sb = new StringBuilder("hello");
String str = sb.toString();
可变字符串面试题

比较String、StringBuilder、StringBuffer这三个类的区别

相同点
  • 都可以用于表示或操作一个字符串

  • 有公共的方法,如indexOf()、charAt()等

  • 都是被final修饰的 类,不能被继承

不同点
  • String定义的字符串是一个常量,不可变;StringBuffer和StringBuilder定义的字符串是一个变量,可以改变。

  • String类中的方法调用后,会创建字符串副本,不会影响原字符串;可变字符串对象调用的方法,直接操作原字符串,会影响。

  • StringBuilder是非线程安全的,StringBuffer是线程安全的,其中的方法使用synchronized修饰为同步方法。在多线程环境下,需要使用StringBuffer。StringBuilder效率略高于StringBuffer。

System类

这个类包含了一些系统相关的信息和操作数组的方法。其中的方法和属性都是静态的。

常用属性和方法作用
System.in获取系统输入流对象,通常用于获取输入信息
System.out打印输出流对象,打印普通信息
System.err打印输出流对象,通常用于打印异常信息
System.exit(int statues)终止虚拟机运行,0表示正常结束
System.getenv(String key)获取系统指定环境变量信息
System.arraycopy(原数组,原数组起始位置,目标数组,目标数组起始位置,原数组要赋值的元素数量)将原数组中指定长度的元素复制到新数组中
System.currentTimeMills()获取1970.1.1 0:0:0至今经过了多少毫秒。中国的是UTC(+8)所以从1970.1.1 8:0:0至今经过了多少毫秒,返回long类型
Runtime类

Runtime类的对象,用于表示程序运行时对象

包含了程序运行环境相关信息。常用于获取运行环境信息(如虚拟机内存)或执行某个命令。

特点

这个类不是一个抽象类,但是不能创建对象,因为其构造方法是私有的。

但是它提供了一个静态方法getRuntime(),通过这个方法,可以获取一个Runtime类的对象。

这就是java中的一种设计模式--单例模式(只能有一个对象创建)

简单使用

Runtime类的对象,可以通过exec()方法执行一个指令,如notepad指令打开记事本,或执行一个存在于硬盘中的.exe可执行文件。该方法返回值是一个Process进程对象,通过Process进程对象调用destory()方法可以摧毁当前进程。

总结

参数只有是引用类型(类、数组、接口),且方法中直接操作该参数时,才会对实参造成影响。

包装类

Java是纯面向对象语言,宗旨是将一切事物视为对象处理。

但原始类型不属于对象,,使用时无需创建对象,保存在栈中。包装类就是原始类型对应的类的类型。

在web应用中,从浏览器获取到的后台数据,全是String类型,一定要使用转换的方法。

  • 所有包装类中都有一个compareTo(参数1,参数2)方法,用于比较两个参数

    • 如果是数值型,参数1>参数2返回1,参数1<参数2返回-1,相同返回0

    • 如果为Boolean型,两个参数相同返回0,不同返时,如果参数1为true返回1,否则返回-1

    • 如果是Character型,返回参数1-参数2的值。

  • 所有的包装类中都有toString()方法,用于将保证类对象转换为String字符串对象

装箱和拆箱
  • 所有包装类都有一个静态方法valueOf(原始类型),将某个原始数据类型的数据转换为相应的包装类对象,这个过程称为装箱。

  • 所有包装类都有一个原始类型value(),用于将包装类对象转换为原始数据类型,这个过程称为拆箱。

Date类

用于表示日期时间的类,位于java.util包下

构造方法
常用构造方法说明
Date()创建当前瞬间的日期对象
Date(long l)创建指定毫秒数对应的日期对象。(从1970.1.1起经过了的毫秒数)
Date(int year,int month,int date)该构造方法已过时。创建指定年月日的日期对象。(年从1900开始,月用0-11)
常用方法
常用方法
getTime()得到相应Date对象指定的毫秒数
steTime(long l)设置毫秒数
after(Date when)判断调用日期对象是否在when之后
before(Date when)判断调用日期对象是否在when之前
SimpleDateFormat类

是一个用于格式化日期的类。

常用方法
常用方法返回值作用
fromat(Date date)String将Date对象按日期模板转换为字符串
parse(String str)Date将满足日期模板的字符串转换为Date对象
Calendar类

用于表示日历的类。包含了很多日历相关信息。

是一个抽象类,无法直接创建对象,可以通过静态方法getInstance()获取该类实例。

Calendar c = Calendar.getInstance();
日历字段

该类中定义了很多被final和static修饰的日历字段,用于获取指定信息

说明
Calendar.YEAR获取年份
Calendar.MONTH获取月份0-11
Calendar.DATE获取日期
Calendar.DAY_OF_WEEK获取星期(1-7表示周天到周六)
Calendar.HOUR_OF_DAY获取二十四小时制的小时
Calendar.MINUTE获取分钟
Calendar.SECOND获取秒
Calendar.DAY_OF_MONTH本月中的第几天
Calendar.DAY_OF_YEAR本年中的第几天
Calendar.WEEK_OF_MONTH本月中的第几周
Calendar.WEEK_OF_YEAR本年中的第几周
常用方法
常用方法
get(日历字段)获取指定日历字段实际值
getTime()获取对应的Date对象(Calendar转换为Date)
getMaximum(日历字段)获取指定字段支持的最大值,如Calendar.Date支持的最大值为31
getActuaMaximum(日历字段)获取指定日历在实际时间下的最大值。如4月Calendar.Date实际最大值为30
getTimeZone()获取当前日历在实际时间下的失去信息
set(日历字段,值)将指定日历字段设置为指定值
set(年,月,日)设置指定的年月日
异常

Throwable是异常类的根类,通常所说的异常其实是指Exception子类

Error错误

如果出现XXXXError,如StackOverflowError栈空间溢出时,无法通过额外的代码去解决,只是修改源码。

Exception异常

如果出现XXXXException,如NullPointerException空指针异常时,可以通过额外代码去避免。

  • 运行时异常(RuntimeException)

    • 可通过编译,在运行时有可能会抛出异常

常见运行时异常说明出现情景
NullPointerException空指针异常
ArrayIndexOutOfBoundsException数组下标越界异常
ClassCastException对象转型异常
InputMismatchException输入类型不匹配异常
AirthmeticExcetion算术运算异常
IIIegalArgumentException非法参数异常
  • 非运行时异常(除RuntimeException)

    • 无法通过编译

常见非运行时异常说明出现场景
IOException输入输出流异常
SQLException数据库SQL相关异常
FileNotFoundException文件未找到异常
处理异常Exception 方式一:try-catch-finally语句

finally语句一定会执行

方式二:throws关键字
  • throws表示用于方法声明异常。使用时写在方法的小括号之后

public void fun() throws Exception{
    
}
  • throw用于手动抛出异常对象。使用时写在{}中,通常用于满足某种条件时,强制中断程序。

public void fun(){
    RuntimeException e = new RuntimeException();
    throw e;
}
数组的特点
  • 保存的元素都是有序的,可以通过下标访问

  • 数据类型相同

  • 长度定义后无法改变

  • 无法获取其中保存的实际元素数量

集合
  • 可以保存一组数据,可以有序也可以无序

  • 容量可变

  • 可以保存不同类型的数据

  • 可以获取集合中实际的元素数量

ArrayList实现类(掌握) 构造方法
常用构造方法说明
ArrayList()创建一个无参ArrayList对象,实际是创建了一个空的Object数组。在调用添加元素方法时,才会初始化该数组大小为10
ArrayList(int capacity)创建一个指定容量的ArrayList对象,实际是创建了一个空的Object数组,如果参数为负,会抛出IIIegalArgumentException异常
常用方法
常用方法作用返回值
add(Object obj)添加obj至集合末尾boolean
add(int index,Object obj)添加obj到index索引上void
get(int index)得到指定index索引的元素Object
set(int index,Object obj)使用obj覆盖index索引的元素,返回被覆盖的元素Object
size()获取集合中的元素数量int
remove(Object obj)删除指定obj对象boolean
remove(int index)删除指定index索引元素,返回被删元素Object
contains(Object obj)判断是否存在obj元素boolean
indexOf(Object obj)得到元素obj第一次出现的索引int
lastIndexOf(Object obj)得到元素obj最后一次出现的索引int
subList(int from,int to)得到[from,to)区间内的元素List
toArray()将集合转换为数组Object[]
数组与集合 数组的特点
  • 数组中元素是有序的,可以快速通过下标访问

  • 数据类型相同

  • 数组长度在定义之后无法改变

  • 数组无法获取其中保存的实际元素数量

集合的特点
  • 能保存一组数据,可以有序也可以无序

  • 容量可变

  • 可以保存类型不同的数据

  • 可以获取集合中实际的元素数量

集合框架

集合的根接口为:Collection接口和Map接口,位于java.util包中

Collection接口

核心的两个子接口:Set和List

Set接口保存数据是无序不重复的,List接口保存数据时是有序可重复的。

List接口(有序可重复)

元素可以重复,允许保存null,可以通过索引获取到对应位置上的元素。

方法:获取元素数量,添加,删除,替换,截取等

ArrayList实现类
  • 采用数组实现的集合

  • 可以通过索引访问元素、可以改变大小,如果在其中插入或删除元素时,会影响其他元素。该集合查询效率高,增删中间元素效率低。

  • 该集合对象中保存的元素,都是引用类型(对象的地址)。即使保存了123,其实保存的不是int的123,而是Integer类型的123。

构造方法

常用构造方法说明
ArrayList()创建一个空的Object数组,在调用添加元素的方法时,才会初始化该数组大小为10。
ArrayList(int capacity)创建一个指定容量的Object数组,如果参数为负,会抛出IIIegalArgumentException异常

LinkedList实现类
  • 采用双向链表实现的集合

  • 如果要查询某个节点的索引,需要从头结点或尾结点开始一步步得到目标节点位置

  • 所以中间进行插入和删除的效率较高,随机读取的效率低

构造方法

常用的构造方法说明
LinkedList()创建一个空链表

常用方法

常用方法
addFirst()添加头结点
addLast()添加尾结点
getFirst()得到头结点
getLast()得到尾结点
remove()删除头结点
removeFirst()删除头结点
removeLast()删除尾节点
push(Object obj)添加头结点(入栈)
pop()得到并移除头结点(出栈)
peek()得到头结点
poll()删除头结点
offer(Object obj)添加尾结点
ArrayList和LinkedList的区别
  • 二者都是List接口的实现类,保存的元素有序可重复,允许保存null,拥有一些公共方法

  • ArrayList采用数组实现,对于随机读取效率更高,通常用于查询;LinkedList采用双向链表实现,插入删除不影响其他元素位置,通常用于中间插入删除。

Set接口(无序不重复)

无序集合,元素不可以重复,允许保存null,没有索引。

哈希码的特点
  • 如果两个对象的hashCode不同,这两个对象一定不同

  • 如果两个对象的hashCode相同,这两个对象不一定相同

    • 如"通话"和"重地"这两个字符串的hashCode相同,但是是两个对象

    • hashCode相同,对象不同,称为哈希冲突

HashSet实现类
  • 元素不能重复,无序保存,允许保存null

  • 本质是一个HashMap对象,调用add()方法,实际调用的也是HashMap中的put()方法,参数作为put()方法的键,new Object()作为put()方法的值

HashSet添加数据的原理

if{两个对象hashCode相同&&两个对象equals相同}{视为同一对象,不能添加}

equals方法和hashCode的关系 TreeSet实现类
  • 特殊的Set实现类,数据可以有序保存,可以重复,不能添加null元素

  • 采用红黑树(自平衡二叉树)实现的集合

    • 二叉树表示某个节点最多有两个子节点

    • 某个节点右侧的节点值都大于左侧节点值

  • 只能添加同一种类型的对象且实现了Comparable接口的对象

    • 实现Comparable接口后必须要重写compareTo方法

    • 每次调用添加时,参数会自动调用该方法

  • 添加的元素可以自动排序

  • compareTo方法的返回值决定了能否添加新元素和新元素的位置

    • 如果返回0,视为同一对象,不能重复添加

    • 如果返回正数,将新元素添加到现有元素之后

    • 如果返回负数,将新元素添加到现有元素之前

构造方法

常用构造方法说明
TreeSet()实际会创建一个TreeMap对象

常用方法

常用方法作用
add(Object obj)添加元素到集合中
size()得到元素数量
isEmpty()判断集合是否为空
clear()清空集合
ceiling(Object obj)得到指定元素大的最小元素
floor(Object obj)得到指定元素小的最大元素
first()/last()得到第一个/最后一个原始

TreeSet的应用

如果要保存的元素需要对其排序时,使用该集合。

HashMap实现类
  • HashMap的数据结构采用"数组+链表+红黑树"实现

    • 当没有哈希冲突时,元素保存到数组中

    • 如果哈希冲突,在对应的位置上创建链表,元素保存到链表中

    • 当链表元素数量大于8,转为红黑树

  • 数据采用"键值对"的形式保存,键为key,值为value,键不能重复,允许null,值没有限制,键和值都是引用类型

  • 在哈希表中,哈希表就是键,保存的数据就是值,可以通过键得到相应的值

构造方法

常用构造方法说明
HashMap()创建一个空的集合对象,默认大小为16

常用方法

常用方法作用
put(Object key,Object value)添加一组键值对
get(Object key)根据键得到值
size()得到键值对的数量
clear()清空所有键值对
keyset()得到所有键的集合
values()得到所有值的集合
containsKey(Object key)判断是否包含某个键
containsValue(Object value)判断是否包含某个值
remove(Object key)根据键删除键值对
泛型

一种规范,常用于限制集合中元素的类型,省去遍历元素时转型的过程。

用法

在定义集合时,在接收集合变量的数据类型后,写上<数据类型>。

集合类或接口<数据类型> 集合变量名 = new 集合实现类<>();

Collections集合工具类
  • Collection是集合的根接口,定义了集合的方法

  • Collections是集合的工具类,定义了很多静态方法,直接通过类名调用

常用方法
常用方法
Collections.shuffle(List list)打乱有序集合的元素顺序
Collections.swap(List list,int i,int j)交换有序集合中i和j索引上的元素
Collections.replaceAll(List list,Object oldVal,Object newVal)将有序集合中的旧元素替换为新元素
Collections.fill(List list,Object obj)将有序集合使用obj填充
Collections.rotate(List list,int distance)将最后diatance个元素放在最前
Collections.sort(List list)对有序集合中的元素进行排序,元素必须实现了Comparable接口
Collections.max(Collention list)得到有序集合中的最小元素,元素必须实现了Comparable接口
Collections.min(Collention list)得到有序集合中的最大元素,元素必须实现了Comparable接口
File文件

Java中可以将本地硬盘中的文件(文件和目录)以对象的形式表示。

就能通过Java代码对本地文件进行读取或操作。

构造方法
常用构造方法说明
File(String pathName)根据文件的完整路径创建对象
File(String parent,String name)根据文件所在的父目录路径和自身文件名创建对象
File(File parent,String name)根据文件所在的父目录文件对象和自身文件名创建对象
常用方法
常用方法说明返回值
exists()判断文件是否存在boolean
isFile()判断是否为文件boolean
isDirectory()判断是否为目录boolean
getName()获得文件名String
getPath()得到文件所在相对路径String
getAbsolutePath()得到文件所在绝对路径String
getParent()得到父目录的名称String
getParentFile()得到父目录的对象File
lastModified()得到文件最后一次修改时间对应的毫秒数long
length()得到文件的所占字节大小long
isHidden()判断文件是否为隐藏boolean
list()得到目录下的第一层子文件名的字符串数组String[]
listFile()得到目录下的第一层子文件名的文件数组File[]
delete()删除某个文件或空目录boolean
mkdir()创建一个空目录boolean
renameTo(File newFile)将原文件命名为新文件(新文件可以指定新位置)boolean

将内存中的数据存入到硬盘中,称为写write,也称为输出

将硬盘中的数据存入到内存中,称为写read,也称为输入

流的分类 InputStream字节输入流

FileInputStream文件字节输入流 ObjectInputStream对象字节输入流(序列化)

OutputStream字节输出流

FileOutputStream文件字节输入流 ObjectOutputStream对象字节输出流(反序列化)

Writer字符输出流

FileWriter文件字符输出流 BufferedWrite缓冲字符输出流(包装流)

OutputStreamWriter字节输出流转换为字符输出流

Reader字符输入流

FileReader文件字符输入流 BufferedReader缓冲字符输入流(包装流) InputStreamReader字节输入流转换为字符输入流(转换流)

按方向分类

输入流:InputStream、Reader

作用:将硬盘中的数据读取到内存中

输出流:OutputStream、Writer

作用:将内存中的数据写入到硬盘中

按类型分

字节流:InputStream、OutputStream

作用:适用于非文本类型,如图片、文件等的读写

字符流:Reader、Writer

作用:适用于文本类型,txt格式文件的读写

流的四个父类的特点

  • 以上四个类都在java.io包下,都是抽象类,不能直接创建对象,要使用子类

  • 都有close()方法,用于关闭流对象释放资源

  • 输出流(OutputStream和Writer)都有flush()方法,用于将流中的数据冲刷到硬盘中

    • 在使用输出流对象时,一定要调用flush()或close()方法,才能将数据写到硬盘中

  • 输入流(InputStream和Reader)都有read()方法读取数据到内存中,输出流都有writer()方法写入数据到硬盘中

  • 所有流类中,以Stream结尾的都是字节流,以Reader或Writer结尾的都是字符流

  • 读取硬盘中的数据时,使用输入流;将数据写到硬盘中时,使用输出流

  • 读取或写入文本文件时,使用字符流;读取或写入非文本文件时使用字节流

FileInputStream文件字节输入流

按字节读取本地文件,本地文件必须存在

构造方法
常用构造方法说明
FileInputStream(String pathName)根据文件名创建文件字节输入流对象
FileInputStream(File file)根据文件对象创建文件字节输入流对象

常用方法

常用方法作用
read()读取一个字节。返回读取到的字节本身
read(byte[] b)按字节数组读取,返回读取到的字节数量,读取到的内容保存在字节数组中
close()关闭流对象
FileOutputStream文件字节输出流

按字节将数据写入到本地文件中,本地文件可以不存在

构造方法
常用构造方法说明
FileOutputStream(String pathName)根据文件名创建文件字节输出流对象,写入内容时覆盖原内容
FileOutputStream(String pathName,boolean append)根据文件名创建文件字节输出流对象,写入内容时追加在原内容之后
FileOutputStream(File file)根据文件对象创建文件字节输出流对象,写入内容时覆盖原内容
FileOutputStream(File file,booleanappend)根据文件对象创建文件字节输出流对象,写入内容时追加在原内容之后
常用方法
常用方法作用
write(int i)写入一个字节
writer(byte[] bytes)写入一个字节数组
writer(byte[] bytes,int off,int len)写入字节数组中从off开始的len个字节
flush()将数据冲刷到本地文件中
close()关闭流对象
FileReader文件字符输入流

按字符读取文件。

构造方法
常用构造方法说明
FileReader(String filename)根据文件名创建文件字符输入流对象
FileReader(File file)根据文件对象创建文件字符输入流对象
常用方法
常用方法作用
ready()判断是否还有下一个字符
read()读取下一个字符,返回读取到的字符
read(char[] chars)按字符数组读取字符,返回读取到的字符数量,读取到的字符保存在了字符数组中
close()关闭流对象
FileWriter文件字符输出流

按字符写入。

构造方法
常用构造方法说明
FileWriter(StringfileName)按文件名创建字符输出流对象
FileWriter(String fileName,boolean append)按文件名创建字符输出流对象,允许追加写入
FileWriter(File file)按文件对象创建字符输入流对象
FileWriter(File file,boolean append)按文件对象创建字符输出流对象,允许追加写入
常用方法
常用方法作用
writer(String str)按字符串写入
writer(char[] c)按字符数组写入
writer(String str,int off,int len)按字符串写入,从off开始写入len个字符
write(char[] c,int off,int len)按字符数组写入,从off开始写入len个字符
flush()
close()
BufferedReader字符缓冲输入流

自带字符数组(缓冲区)的字符输入流。默认字符数组大小为8192,每次最多读取8192个字符在读取纯文本文件(txt或md等)时,首选该类。

构造方法
常用构造方法说明
BufferedReader(Reader reader)创建一个带有缓冲区(字符数组)的字符输入流对象,默认缓冲区大小为8192。参数注意是一个Reader类型的对象,但Reader是一个抽象类,所以要使用其子类,如FileReader,然后在FileReader中定义要读取的文件信息。
BufferedReader(Reader reader,int size)创建一个指定缓冲区(字符数组)大小的字符输入流对象
常用方法
常用方法作用
ready()判断是否还有字符
readLine()读取整行字符
close()关闭流对象
BufferedWriter字符缓冲输出流

自带字符数组(缓冲区)的字符输出流。

构造方法
常用构造方法说明
BufferedWriter(Writer writer)创建一个带有缓冲区(字符数组)的字符输出流对象,参数为一个Writer对象,但Writer是一个抽象类,所以要使用其子类,如FileWriter对象,在FileWriter中定义要写入的文件
BufferedWriter(Writer writer,int size)创建一个指定缓冲区(字符数组)大小的字符输出流对象
常用方法
常用方法作用
writer(String str)写入一个字符串
newLine()换行
flush将输出流中的字符冲刷到文件中
close()关闭流对象
ObjectOutputStream对象字节输出流(序列化)

序列化:将数据转换为文件的过程

被序列化的对象,必须要实现serializable接口

这个接口是一个特殊的接口,没有定义方法,知识给这个类打上标签,表示该类可以被序列化。

构造方法
常用构造方法说明
ObjectOutputStream(OutputStreamos)创建一个对象字节输出流对象,参数为一个字节输出流对象,由于是抽象类,所以要使用其子类,如FileOutputStream对象,在其中定义要写入的文件。
常用方法
常用方法作用
writeObject(Object obj)将一个对象写入到本地文件中
close()关闭流对象
ObjectInputStream对象字节输入流(反序列化)

反序列化:将文件转换为对象的过程

构造方法
常用构造方法说明
ObjectInputStream(InputStream is)创建一个对象字节输入流对象,参数为一个字节输入流对象,由于是抽象类,所以要使用其子类,如FileInputStream对象,在其中定义要读取的文件
常用方法
常用方法作用
readObject()读取序列化后的文件,返回对象Object
close()关闭流对象

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号