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

JavaSE第四周总结

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

JavaSE第四周总结

day16 泛型
  • 泛型概述

    概述:
    	是一个不知道具体数据类型的时候使用一个符号表示的数据类型
    	
    使用:
    	1、先定义泛型
        2、泛型实例化
        
    好处:
    	1、把运行时期的问题提前到了编译期间
    	2、避免了强制类型转换
    
  • 泛型类的定义

    格式:【泛型定义在类名后面】
    	修饰符  class 类名<泛型> {类的内容}
    	
    定义泛型后:
        类中就可以使用泛型数据类型
    
    实例化时机:
    	创建类对象的时候必须实例化类定义的泛型 
    
  • 泛型方法的定义

    格式:【泛型定义在返回值类型前面】
    	普通泛型方法:
          修饰符 <类型> 返回值类型 方法名(泛型名 变量名) {方法体}
        静态泛型方法:
            修饰符 static <类型> 返回值类型 方法名(类型 变量名) {方法体}
    
    实例化时机:
    	方法被调用的时候通过实参的数据类型对泛型进行实例化
        
    注意事项:
    	1、普通方法可以使用自己的泛型,也可以使用类声明的泛型
        2、`静态方法不可以使用类声明的泛型`,只能使用自己声明的泛型
        3、方法的泛型声明在返回值类型前面
    
  • 泛型接口

    格式:
    	在接口名后面声明泛型的接口就是泛型接口
    
    实例化时机:
        1、定义子接口继承接口、实现类实现接口时
        	若接口本身没有实例化泛型,则将泛型传递给子接口或实现类,在创建实现类对象的时候再实例化泛型
    		若接口本身实例化泛型时,则实现类或子接口没有泛型
    	2、一般情况,`由接口的最终实现类对象创建时实例化泛型`
        
    注意事项:
    	java中使用泛型最多的就是集合,平时使用都是集合对泛型的实例化:
    		若人为没有实例化泛型,默认系统使用Object实例化泛型
    
  • 泛型通配符

    类型通配符:
    	: 表示可以匹配`任何的引用数据类型`
    类型通配符上限:
    	: 表示的类型是类型名或者其子类类型
    类型通配符下限:
    	: 表示的类型是类型名或者其父类型   
    
day17 一、无序单列集合【Set】
特点:
	1、无序
	2、没有索引
	3、元素不可重复【元素唯一】
	
作用:
	Set集合一般用于数据去重
   
遍历方式:
	迭代器遍历
	增强for遍历
	
实现类:
	HashSet:典型Set集合实现类
		linkedHashSet:是HashSet的子类 【为了让无序集合变有序】
	TreeSet:是一个自动进行排序的无序集合
HashSet
典型的Set集合的实现类,几乎没有特有功能。
linkedHashSet
是HashSet的子类,在保证HashSet的基础上,增加有序性。【存、取数据顺序一致】
TreeSet【自然排序和比较器排序】
TreeSet是Set集合的常用实现类,自动对集合内部的元素进行排序
	构造:
		TreeSet():自然排序
            前提:存入数据对应的类实现Comparable接口,指定排序的规则
        TreeSet(Comprator c):比较器排序
            Comprator:一个接口,定义了排序的原则,用来指定排序规则
            这个构造不管泛型有没有自然的排序规则,优先使用自己指定的比较器排序
            
    自然排序:
    	特点:
    		存放的元素是jdk提供的类对象一般默认升序排排序
    		存放的元素是自定义的类对象按实现的Comparable的compareTo指定的原则来排序
    	前提:
            要求集合添加的元素对应的类必须实现Comparable接口,并重写compareTo方法
            指定返回值的时候【指定排序的规则】:
                o.属性-this.属性 是降序排序 [o传入的参数对象  this调用对象]
                this.属性-o.属性 是升序排序
    比较器排序:
    		创建TreeSet集合对象的时候传入一个Comparator比较器对象【传入排序原则】
            重写compare方法指定排序的原则
                return o1.getAge() - o2.getAge();// 升序
                return o2.getAge() - o1.getAge();// 降序
HashSet集合的元素唯一性原理【面试题9】

前提:
	存储的元素类型必须`重写hashCode方法和equals方法`
	
原理:【存储过程描述】
    1、调用存入数据的hashCode方法得到对应的哈希值
    2、通过哈希值确定数据要存入哈希表的数组的具体位置:
    3、判断该位置是否有节点:
        没有:直接把数据以链表的节点存入该位置
        有:
            树节点:
                遍历数得到每个节点的数据和存入的数据
                    比较哈希值是否一致:
                        不一致:直接存入对应的树节点
                        一致:
                            调用equals方法进行属性比较
                                相同:放弃存入
                                不同:把数据存入到对应的树节点上
            链表节点:
                遍历链表得到每一个数据和存入的数据
                    比较哈希值是否一致:
                        不一致:直接存入链表节点
                        一致:
                            调用equals方法进行属性比较
                                 相同:放弃存入
                                 不同:
                                    会对链表的节点个数做判断处理:
                                        个数小于9时,把数据存入到对应的链表节点上【尾部节点】
                                        个数大于8时,把链表进行树化【变为红黑树来存储已有的数据】,											把数据放入对应的红黑树的节点上

二、双列集合【Map】
概述:
	双列集合,指的是集合中每个位置存放的是一对有映射关系的数据。【键值对数据】
	存储在Map中的元素,为了键唯一,键元素需要重写hashCode方法和equals方法。
	
特点:
	1、存放键值对数据
    2、无序
    3、键唯一【值不唯一】
    
常用方法:
   public V put(K key, V value):  把指定的键与指定的值添加到Map集合中。【既是增加,也是修改】
   public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
   public V get(Object key):根据指定的键,在Map集合中获取对应的值。
   boolean containsKey(Object key): 判断集合key中是否包含指定的元素。
   boolean containsValue(Object value): 判断集合value中是否包含指定的元素。
   public Set keySet(): 获取Map集合中所有的键,存储到Set集合中。
   public Collection values():获取Map集合中所有值,存放到Collection集合中   
   public Set> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。
   
遍历方式:
	1、键遍历【键找值遍历】
		 ①通过keySet方法把Map集合变为set集合
         ②遍历set集合获取每一个key值
         ③获取单个key的时候通过get方法得到对应的value
	2、键值对遍历
		①通过entrySet方法把map集合转变为Entry对象的Set集合
        ②遍历Set集合得到每一个Entry对象
        ③通过Entry的getKey和getValue方法分被得到key值和value值
	3、值遍历
		values(): 可以获取集合中所有的值,形成一个单独的集合.【只能遍历map集合的值】

实现类:
	HashMap:典型实现类【采用哈希表数据结构】
    	linkedHashMap:在HashMap的基础上,增加有序的特性【采用哈希表和链表】
	TreeMap:可排序
HashSet 和 HashMap的区别【面试题10】
    1、出现时机不一样
    	HashMap是jdk1.2出现的
    	HashTable是jdk1.0出现
	2、线程安全不一样
    	HashMap是线程不安全的
    	HashTable是线程安全的
    3、存放数据要求不一样
    	HashMap是支持null值和null键的
    	HashTable是不支持null数据的
三、Collections工具类 可变参数
概述:
	同一类型、个数不确定的参数
	定义:
    	数据类型… 变量名  
    
格式:【用在方法的`形参列表`中】
	修饰符 返回值类型 方法名(数据类型… 变量名) { 方法体 }

注意事项:
	1、可变参数的本质是一个数组,使用时根据数组使用方法使用
    2、若方法有多个参数,可变参数要放在最后
Collections常用方法
方法名说明
public static void sort(List list)将指定的列表按升序排序
public static void reverse(List list)反转指定列表中元素的顺序
public static void shuffle(List list)使用默认的随机源随机排列指定的列表
public static void swap(List list, int i, int j)在指定列表的指定位置处交换元素。
max返回给定 collection 的最大元素。
min返回给定 collection 的最小元素。
public static boolean addAll(Collection c, T… elements)将所有指定元素添加到指定 collection 中。
public static int frequency(Collection c, Object o)返回 collection 中等于指定对象的元素个数。
synchronizedXxx()转线程安全一系列的方法
day18 File类【IDE中相对路径的参考是工程路径】
概述:
	File类是文件和目录路径名的抽象表示,定义了一些常用属性和操作文件的功能。
	
构造:
	File(String path):创建一个以path路径为目标文件的File对象
    File(String parent, String child):创建一个以parent + child拼接后的路径为目标文件的File对象
    File(File file, String child):创建一个以file文件对象的路径 + child 拼接后的路径为目标文件的File对象

方法:
	创建功能:
		boolean createNewFile():创建一个File对象路径对应的文件
			【被调用的时候确保文件所在的目录必须在磁盘中存在】
		boolean mkdir():创建单级文件夹
			【被调用的时候确保目录所在的目录必须在磁盘中存在】	
		boolean mkdirs():创建多级文件夹
	删除功能:
		delete():删除磁盘对应的文件或空文件夹
		注意:
			1、只能删除空的文件夹
			2、删除不走回收站
	重命名功能:
		renameTo(File dest):改名字的方法
		使用场景:
            调用对象和参数对象在同一个文件夹下:重命名
			调用对象和参数对象不在同一个文件夹下:剪切
	判断功能:
		exists:判断File对象对应的文件是否真实存在
        isFile:判断File对象对应的文件是否为文件
        isDirectory:判断File对象对应的文件是否为文件夹   
	获取功能:
		length:获取文件的内容的字节个数【大小】
        getPath:获取File对象创建时构造的路径
        getName;获取File对象对应文件的文件名
        getAbsolutePath:获取File对象对应文件的绝对路劲
        String[] list:获取File对象对应文件的子文件的文件名,返回一个字符串数组
        File[] listFiles:获取File对象对应文件的子文件的File对象,返回一个File数组
day19 IO流
注意事项:
	输出流和输入流操作的是同一个文件时,不要同时创建io流对象,输出流对象最好在输入流读取完毕数据之后再创建
字节流
字节流可以处理所有数据。
  • InputStream

    概述:
    	所有字节输入流的顶层抽象类,定义了所有字节输入流的共性功能。
    
    常用功能:
    	int read():一次读取一个字节数据到内存
        int read(byte[] bytes):使用字节数组去读取多个字节的内容到内存	
        int available():返回未读取的字节的个数
        close():关闭流【所有的io流都有的一个方法】
    
    • FileInputStream

      概述:
      	InputStream的子类,将磁盘文件的内容读入到内存。
      	
      构造:
      	FileInputStream(File file):创建一个可以读取指定File对象对应的文件的字节输入流对象		
      	FileInputStream(String path):创建一个可以读取指定路径对应的文件的字节输入流对象
      	
      注意事项:
      	1、同一个字节输入流对象每读取一个字节,光标向后移动一位,下一次读取以光标所在位置开始读
      	2、所有的字节数读取完毕继续读取的时候得到的是-1.
      
  • OutputStream 字节输出流

    概述:
    	所有字节输出流的顶层抽象类,定义了所有的字节输出流的共性功能
    
    常用功能:
    	void write(int b):输出字节内容到指定的目标文件中
        void write(byte[] arr):输出字节数组中所有的字节内容到目标文件中
        void write(byte[] arr, int offset, int len):输出字节数组中指定范围的字节内容到目标文件中    
             offset:输出的字节内容的开始索引值
             len:输出的字节个数 【数值不能大于数组长度-offset【开始索引值】】
        void close():关闭流
    
    • FileOutputStream

      概述:
      	OutputStream的子类,将内存内容写出到磁盘文件。
      	
      构造:
      	FileOutputStream(File file):创建以指定File对象对应的文件为目标文件的字节输出流对象 		
      	FileOutputStream(String path):创建以指定path路径对应的文件为目标文件的字节输出流对象	
      	
      注意事项:
      	字节输出流对象创建的时候,若指定的目标文件不存在,则自动的创建文件	  
          字节输出流对象创建的时候,若指定的目标文件已经存在,则对已经存在的文件进行格式化
      
      追加续写:
      	FileOutputStream(String path,boolean b):	
          FileOutputStream(File file,boolean b):
          参数b必须是`true`
      
字节缓冲流【字节高效流】
概述:
	对字节流进行提升效率,这个流本身没有读写的功能,由内部修饰的字节流进行读写。
	【前提:必须要有字节流】
	
作用:
	对字节流进行提效
	
分类:
	字节输出缓冲流【BufferedOutputStream】
	字节输入缓冲流【BufferedInputStream】
	
构造:
	BufferedInputStream(InputStream is):创建一个以is为提升目标的字节输入缓冲流对象
	BufferedOutputStream(OutputStream os):创建一个以os为提升目标的字节输出缓冲流
	
普通方法:
	就是内部的字节流的方法
	
特有方法
	字节缓冲输出流【BufferedInputStream】:
		flush():刷新缓冲区
				 在字节数组没有被写满的情况下,强制把数据写到目标文件中
flush方法 和 close方法的区别【面试题10】
flush方法:
	用来刷新字节输出缓冲流的缓冲区内容,调用之后流对象还存在,可以继续使用
close方法:
	用来关闭流对象,默认先调用flush方法刷新缓冲区后,再关闭流对象,调用之后流对象不存在,不能继续使用
字符流
特点:
	字符流只能操作纯文本文件,不能操作非纯文本文件【图片、音频、视频等】
作用:
	操作数据的过程中如果需要查看数据,并且数据中含有中文,字节流可能会发生乱码现象,字符流可以避免乱码。
	乱码原因:编码和解码使用的编码集不一致。
分类:
	字符输入流  Reader
	字符输出流  Writer
  • Reader

    概述:
    	字符输入流的顶层抽象类,定义了字符输入流的共性功能
    	
    常用功能:
    	read():一次读取一个字符  返回值是读到的字符
        read(char[] ch): 一次读取多个字符  返回值是读到的有效的字符个数
        close():关闭流
    
    • FileReader

      概述:
      	是Reader的子类【孙子辈】,将磁盘文件的内容读入到内存
      	
      构造:
      	FileReader(File file):创建一个以file对象对应的文件为目标文件的字符输入流对象
      	FileReader(String path):创建一个以path路径对应的文件为目标文件的字符输入流对象
      
  • Writer

    概述:
    	字符输出流的顶层抽象类,定义了字符输出流的共性方法。
    
    常用功能:
    	write(int c):写出单个字符到磁盘文件
        write(String str):写出字符串到磁盘文件
        write(char[] arr):写出字符数组的全部字符到磁盘文件
        write(char[] arr, int offset, int len):写出字符数组的部分字符到磁盘文件
      	  offset:写出的开始字符的索引值
      	  len:写出的字符的长度【个数】
      		  不能大于数组长度-开始索引【offset】
        close():关闭流资源
        flush():刷新缓冲区
    
    • FileWriter

      概述:
      	是Writer的子类,将内容内容写出到磁盘文件。
      	
      构造:
      	 FileWriter(File file):创建以File对象对应的文件为目标文件的字符输出流对象	
        	 FileWriter(String path):创建以path路径对应的文件为目标文件的字符输出流对象
      
      注意事项:
      	 字符输出流创建对象的时候检查目标文件在磁盘中是否存在:
        	 	存在:不会自动的创建空白文件,但是会对文件做格式化处理
        	 	不存在:系统自动创建一个空白文件出来【文件所在目录必须存在】
        	 	
      追加写入:
      	FileWriter(File file,boolean b):
          FileWriter(String path,boolean b):
      	注意:参数b必须为`true`
      
字符缓冲流【字符高效流】
概述:
	对字符流进行提升效率
	【前提:必须要有字符流】
	
分类:
	字符输入缓冲流【BufferedReader】
	字符输出缓冲流【BufferedWriter】
	
构造:
	BufferedReader(Reader r) :创建一个提升指定字符输入流r的效率的字符输入缓冲流对象
 	BufferedWriter(Writer w) : 创建一个提升指定字符输出流w的效率的字符输出缓冲流对象
	
普通方法:
	就是内部的字符流的方法
	
特有方法:
	字符输入缓冲流【BufferedReader】:
  		readLine():一次读取一行的数据【行不是屏幕上看到的行】
	字符输出缓冲流【BufferedWriter】:
  		newline():换行效果  【等同于字符串 "rn"】
缓冲流高效原理【面试题11】
[字节/字符]输入缓冲流:
	输入缓冲流调用读入方法时,先在内存中创建一个长度为8192的[字节/字符]数组,
    并且缓冲流对象一次性的从目标文件中读取8192个内容到数组中,
    然后缓冲流内部的基本输入流按照read方法指定的个数从数组中读走对应个数的[字节/字符],
    当数组中的内容读完时,缓冲流对象再次到目标文件读取8192个[字节/字符]回来供基本流读取,
    一直到读取完毕,
    减少了基本流和目标文件的交互次数,从而提效。
	
字节输出缓冲流:
	输出高效流在调用输出方法进行数据写出的时候,没有直接把数据优先写到目标文件中,
	先在内存的另一个位置创建了一个长度为8192的[字节/字符]数组,
	输出方法执行高效流内部修饰的基本流,按照输出方法指定输出的[字节/字符]个数把对应的内容先写到这个数组中,
	当数组被写满时,自动触发flush方法,一次性的把8192个[字节/字符]内容写到目标文件中,
	减少了基本流和目标文件的交互次数,提升写出的效率。
	【在数组没有被写满的情况下,需要调用flush方法,强制把数据写到目标文件中】
day20 转换流
概述:
	是字符流子类,转换流本质是字符流。
	只能操作纯文本文件,可以指定字符流的编码集。
	
作用:
	1、指定字符流操作使用的编码集
    2、完成字节流和字符流的相互转换
    3、解决一定的乱码问题
    
分类:
	输入转换流【InputStreamReader】
	输出转换流【OutPutStreamWriter】	
OutputStreamWriter【输出转换流】
概述:
        属于字符输出流Writer的子类,本质是字符流 所以他的功能就是字符流的功能,
        字符输出转换流是字符流通向字节流的桥梁:可使用指定的编码集将要写入流中的字符编码成字节输出
    
构造:
	OutputStreamWriter(OutputStream os, String charSet):
	创建一个指定编码集以及转换后的字节输出流的转换流对象
    【charSet可以不指定,使用的就是默认编码集】
    
原理图:

InputStreamReader【输入转换流】
概述:
      是字符输入流Reader的子类,本质是一个字符流,所以他的功能就是字符流的功能。
      字符输入转换流是`字节流通向字符流的桥梁`:它使用指定的字符集读取字节并将其解码为字符
   
构造:
	InputStreamReader(InputStream is, String  charSetName):
    	创建一个指定编码集的读取字节内容的输入转换流对象
    【字节输入流被输入转换流修饰变为了字符输入流】
    【charSetName参数可以不给,字符流的编码集使用默认的】
	
原理图:

标准流
  • System.in【标准输入流】

    System.in:
    	该流的类型为InputStream,属于字节流,默认关联的设备为键盘
        【使用转换流可以包装成字符流,使用BufferedReader可以包装成缓冲流】
        通过System.setIn(InputStream in),可以更改标准输入流关联的设备
        该流对象不需要关闭
    
  • System.out【标准输出流】

  System.out:
  		该流的类型为PrintStream,属于打印流,是特殊的字节流,默认关联的设备是控制台。
  		【使用转换流可以包装成字符流PrintWriter,也可以包装成缓冲流提效】
		通过System.setOut(OutputStream out),可以更改标准输出流关联的设备
		关联:
			其他流:不需要关闭流对象
			控制台:
				调用write方法时,需要关闭流对象;
				调用特有print方法时,不用关闭流对象
打印流
PrintStream字节打印流,PrintWriter字符打印流,这两个流都是输出流。
	这两个流中除了继承各自父类中的 write()方法外,还提供了很多重载形式的print()和println()方法,可以很方便的将各种数据类型以字符串的形式进行输出(会将所有数据类型,先转成字符串,然后进行输出)
  • PrintStream流【字节打印流】

    • 是OutputStream子类,属于字节输出流
      	注意:
      		打印数组时,如果是字符数组,调用print(char[] ch)或println(char[] ch),打印数组的内容
      				  如果是其他数组,调用print(Object obj)或println(Object obj),打印数组的地址值
      
      创建该流对象的方式有两种:
      	1.构造方法【指定打印的目标地址】
      	2.System.out【默认打印控制台 想改借助于setOut方法】
      
    • 构造方法

      方法名说明
      PrintStream(File file)创建具有指定文件且不带自动行刷新的新打印流。
      PrintStream(OutputStream out)创建新的打印流。
      PrintStream(String fileName)创建具有指定文件名称且不带自动行刷新的新打印流。
  • PrintWriter流【字符打印流】

    • 是Writer子类,是字符输出流,自带一个缓冲区,提供了自动刷新的功能。
      
      创建该流对象的方法:
      	构造方法
      	   注意:当参数autoFlush为true时,开启自动刷新,但只对println ()、printf()、format()方法有效
      
    • 构造方法

      方法名说明
      PrintWriter(File file)使用指定文件创建不具有自动行刷新的新 PrintWriter。
      PrintWriter(OutputStream out)根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。
      PrintWriter(OutputStream out, boolean autoFlush)通过现有的 OutputStream 创建新的 PrintWriter。
      PrintWriter(String fileName)创建具有指定文件名称且不带自动行刷新的新 PrintWriter。
      PrintWriter(Writer out)创建不带自动行刷新的新 PrintWriter。
      PrintWriter(Writer out, boolean autoFlush)创建新 PrintWriter,autoFlush为true时,开启自动刷新
对象序列化【瞬时态【内存】---->持久态【磁盘】】
对象序列化:
    	就是将原本在内存中的对象保存到磁盘中,或者在网络中传输对象【即瞬时态数据变为持久态数据】
	这种机制使用一个字节序列表示一个对象,该字节序列包含:对象的类型、对象的数据和对象中存储的属性等信息
	字节序列写到文件之后,相当于文件中持久保存了一个对象的信息
	反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化【持久态的数据回归对应的瞬时态数据】
	

	 
        可以使用ObjectInputStream【反序列化流】读取(重构)对象。 
        可以通过使用流的文件来实现对象的持久存储。 
        如果流是网络套接字流,则可以在另一个主机上或另一个进程中重构对象 
  • ObjectOutputStream【对象序列化流】

    • 概述:

      将对象的原始数据类型和属性写入OutputStream字节输出流,字节输出流再把数据写到磁盘文件中。
      【将对象写到磁盘文件中】
      
    • 构造:

      方法名说明
      ObjectOutputStream(OutputStream out)创建一个写入指定的OutputStream的ObjectOutputStream
    • 对象序列化方法:

      方法名说明
      void writeObject(Object obj)将指定的对象写入ObjectOutputStream
  • ObjectInputStream【对象反序列化流】

    • 概述:

      将磁盘文件中对象序列化后的字节序列读入InputStream中,字节输入流再重构对象
      【从磁盘文件重构(读取)对象】
      
    • 构造:

      方法名说明
      ObjectInputStream(InputStream in)创建一个写入指定的InputStream的ObjectInputStream
    • 对象反序列化方法:

      方法名说明
      Object readObject()从ObjectInputStream读取一个对象
  • 自定义对象序列化【自定义对象的类型必须实现 Serializable 接口】

    注意事项:
    	1.一个对象要想被序列化,该对象所属的类必须必须实现Serializable 接口
    	2.Serializable是一个标记接口,实现该接口,不需要重写任何方法
    
    serialVersionUID&transient
          serialVersionUID:
              1.用对象序列化流序列化了一个对象后,假如我们修改了序列化对应的文件,读取数据会出问题并抛出异常
                  【StreamCorruptedException: invalid stream header: 】	
              2.解决方案
                  重新序列化
                  给对象所属的类加一个serialVersionUID
                  格式为:private static final long serialVersionUID = XXX;
    
          transient关键字:
              给该成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程。
    
Properties类
  • 概述

    Properties:表示一个持久的属性集,是Hashtable的子类。
                  属性集:一种映射关系的双列集合,属性名和属性值的映射关系
                  持久的:可以保存到流中,方便读写
      特点:
    	 1、继承Hashtable时,泛型已经被Hashtable实例化为Object,所以Properties本身没有泛型。
    	 2、使用继承而来的功能时,可以是任意的引用数据类型
    	 3、一般不作普通集合使用,只用作属性集。
    	 4、用作属性集时,key和value的泛型都实例为String
    
  • 特有方法

    方法名说明
    Object setProperty(String key, String value)设置集合的键和值,都是String类型,底层调用Hashtable的 put方法
    String getProperty(String key)使用此属性列表中指定的键搜索属性
    Set stringPropertyNames()从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串
  • Properties和IO流结合的方法

    方法名说明
    void load(Reader reader)从输入字符流读取属性列表(键和元素对)
    void load(InputStream in)从输入字节流读取属性列表(键和元素对)
    void store(Writer writer, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式写入输出字符流
    void store(OutputStream out, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(InputStream)方法的格式写入输出字节流

    注意事项:

    ​ 1、使用prop修改了属性值之后,文件中的属性值不会发生变化,因为prop只修改了内存中的对象数据,没有同步到文件中。必须调用store方法之后,才能将变化同步到文件。

    | 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串 |

  • Properties和IO流结合的方法

    方法名说明
    void load(Reader reader)从输入字符流读取属性列表(键和元素对)
    void load(InputStream in)从输入字节流读取属性列表(键和元素对)
    void store(Writer writer, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式写入输出字符流
    void store(OutputStream out, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(InputStream)方法的格式写入输出字节流

    注意事项:

    ​ 1、使用prop修改了属性值之后,文件中的属性值不会发生变化,因为prop只修改了内存中的对象数据,没有同步到文件中。必须调用store方法之后,才能将变化同步到文件。

    ​ 2、调用store方法时,一般需要指定更新属性的原因,即第二个参数comments,如果没有注释,可以传入null;如果有注释,必须是纯英文注释

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

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

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