IO流——属性集Properties、枚举

1、属性集Properties

1.1、概述

【HashMap和Hashtable 都是通过key=value的方式来存储数据的,它俩的区别:Hashtable不能把null作为key和value】

java.util.Properties继承自Hashtable,来表示一个持久的属性集。它使用键值对结构存储数据,每个键及其对应值都是一个字符串。该类是一个非常实用的类,比如:在后续的开发中,获取数据库连接对象,获取一些配置文件信息等

创建属性文件

属性文件一般放置在src根目录下,属性文件的后缀名.properties
属性文件中,每一行只能写一个key=value,而且不需要任何的符合来修饰

1.2、Properties类

构造方法

Properties() 创建一个没有默认值的空属性列表。

基本的储存方法

  1. public Object setProperty(String key, String value):保存一对键值对
  2. public String getProperty(String key):根据键获取值
package com.bdit;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/*
Properties属性集
 */
public class Demo9 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //读取config.properties属性文件
        InputStream inputStream=Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
        //创建Properties对象
        Properties properties=new Properties();
        //把InputStream对象加载到properties对象中
        properties.load(inputStream);
        //根据key获取值

        String name=properties.getProperty("name");
        String age=properties.getProperty("age");
        String address=properties.getProperty("address");
        //给属性集对象中的key设置值
        properties.setProperty("id","1006");
        String id=properties.getProperty("id");
        System.out.println(id+" "+name+" "+age+" "+address);
    }
}

2、枚举

2.1、枚举

  1. 枚举也是一种特殊的类(枚举也是一种数据类型)。枚举可以定义在类中,
  2. 语法:
    [访问修饰符] enum 枚举名称{
    }
  3. 当然,也可以单独创建一个枚举类,语法:
    [访问修饰符] enum 枚举名称{
    }
  4. 什么时候需要使用枚举来解决问题?
    当一个类的对象是有固定范围的时候,不能随意创建类的对象,这时我们可以采用枚举来解决这一类型的问题。例如:性别类(男、女),季节类(春、夏、秋、冬)。

2.2、枚举的特点

  1. 声明枚举类以后,就必须在枚举类中的第一句代码中,声明枚举类的所有实例,实例之间用逗号隔开。如果一个枚举类没有声明实例,那么这个枚举则永远不会有实例产生。列出这些实例时系统会自动添加public static final修饰,无需程序员显式添加。
  2. 在枚举中也可以定义属性和方法
  3. 如果枚举类确实不存在任何的实例,则枚举类中的第一句代码需要添加一个分号;否则枚举无法编译。
  4. java为每个枚举类都提供了一个values()方法,用来获取枚举中所有的实例对象。
  5. 可以通过枚举类.对象名.属性名/方法名的方式调用枚举类中的普通方法和属性
  6. 如果调用枚举类中的静态方法和属性,语法:枚举类.静态属性/静态方法。
  7. 枚举类也可以有构造方法,而且构造方法的访问修饰符必须是private。当枚举类在被使用时,枚举类会自动调用构造方法,创建出在枚举中声明的所有实例对象。
  8. 枚举中的构造方法也可以有参数,如果构造方法是有参数的,那么在声明枚举实例对象时,就必须传递参数,语法:实例名称(参数列表)
  9. 枚举也可以实现接口
  10. 枚举不可以继承任何形式的类。
package com.bdit;
/*
定义枚举enum
 */
public class Demo10 {
    
    

    public enum Gender{
    
    
        //定义枚举类的实例对象
        MAN,WOMEN;
    }

    public static void main(String[] args) {
    
    
        Gender[]gs=Gender.values();
        for(Gender g:gs){
    
    
            System.out.println(g);
        }
        Gender2.MAN.display();
        Gender2.display2();
    }
}


package com.bdit;
/*
枚举类
 */
public enum Gender2 {
    
    
    //定义枚举类对象
    MAN,WOMEN;
    Gender2(){
    
    
        System.out.println("Gender2的构造方法=====");
    }
    private int age;
    private String name;
    public void display(){
    
    
        System.out.println("枚举类的实例方法");
    }

    public static void display2(){
    
    
        System.out.println("枚举类中的静态方法");
    }
}


package com.bdit;

public enum Season implements MyInter {
    
    
    SPRING("春天"),SUMMARY("夏天");

    private String name;
    private Season(String name){
    
    
        this.name=name;
    }

    public static void main(String[] args) {
    
    
        System.out.println(Season.SPRING.name);
        Season.SUMMARY.t1();
    }

    @Override
    public void t1() {
    
    
        System.out.println("枚举也可以实现接口");
    }
}

interface MyInter{
    
    
    void t1();
}

猜你喜欢

转载自blog.csdn.net/vlucky_long/article/details/108654116