枚举类



枚举类型本质是一种继承 java.lang.Enum 类. 特点:



  1. 枚举类是引用类型, 具有面向对象特性, 可以添加成员变量和方法.
  2. 枚举类父类是 java.lang.Enum, 不需要显示声明.
  3. 枚举类可以实现接口, 与类接口实现类似.
  4. 枚举类不能被继承, 不存在子类.

声明:



[public] enum 枚举名{
  枚举常量列表
}



示例:



enum WeekDays{
  MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
}



枚举在 switch 语句中的应用



WeekDays day = WeekDays.FRIDAY;
System.out.println(day); // 输出FRIDAY
 
switch(day) {
  case MONDAY:
    System.out.println("周一");
    break;
  case TUESDAY:
    System.out.println("周二");
    break;
  case WEDNESDAY:
    System.out.println("周三");
    break;
  case THURSDAY:
    System.out.println("周四");
    break;
  case FRIDAY:
    System.out.println("周五");
    break;
}



枚举类中的成员变量和成员方法



enum WeekDays{
  // 枚举常量列表
  MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
  // 实例变量
  private String name;
  // 静态变量
  private static int staticVar = 100;
  // 实例方法
  public void getInfo() {
    // 输出枚举类实例的常量值, 如FRIDAY
    System.out.println(this.toString());
  }
  // 静态方法
  public static void getStaticVar()
  {
    System.out.println(staticVar);
  }
}



调用:



day.getInfo(); // 输出FRIDAY
WeekDays.getStaticVar();



枚举常量列表语句必须是枚举类中的第一行.

枚举类构造方法



枚举类可通过构造方法初始化成员变量.



示例:



enum WeekDays{
  // 枚举常量列表, 定义枚举常量同时调用构造函数
  MONDAY("周一"), TUESDAY("周二"), WEDNESDAY("周三"), THURSDAY("周四"), FRIDAY("周五");
  // 实例变量
  public String name;
  // 构造函数
  private WeekDays(String name) {
  = name;
  }
}



调用:



WeekDays day = WeekDays.FRIDAY;
System.out.println(day + ": " + );



枚举类的构造方法必须是 private 级别, 定义构造方法时可以省略该关键字.



枚举常用方法

  1. int ordinal(): 返回枚举常量的顺序. 从 0 开始.
  2. 枚举类型[] values(): 静态方法, 返回一个包含全部枚举常量的数组.
  3. 枚举类型 valueOf(String str): 静态方法, str 是枚举常量对应的字符串, 返回一个包含枚举类型实例.

Java 类引用类型进行比较时, 有两种比较方法==和equals, ==比较的是两个引用是否指向同一个对象, equals比较的是两个对象的内容是否相同. 但枚举类中==和equals是一样的, 都比较两个引用是否指向同一个实例. 枚举类中每个枚举常量无论何时都只有一个实例.

Java 常用类

Java 的根类–Object

  1. 位于 java.lang 包中.
  2. 不需要 import 语句引入, 有解释器自动引入.

常用方法:



String toString(): 返回该对象的字符串表示. 如果没有覆盖此方法, 返回值是 “类名@对象的十六进制哈希吗”.




System.out.println 等输出语句会自动调用对象的 toString() 方法.

boolean equals(Object obj): 判断某个对象是否与此对象相等.


包装类



Java 的 8 中基本数据类型不属于类, 不具备对象的特征. 为此 Java 为每种基本数据类型提供了对应的包装类.



int java 数据库 枚举 java的枚举类_int java 数据库 枚举



数值包装类( Short/Byte/Integer/Long/Double/Float)



数值包装类具有相同的特征, 下面以 Integer 类为例:



  1. 构造方法 Integer(int value): 通过一个数值构造 Integer 对象. Integer(String s): 通过制定一个十进制字符串表达式构造对象.
  2. 共同的父类 数值包装类共同的父类是 Number. 该类是一个抽象类, 包括以下常用方法: byte byteValue(): 将当前对象转换为 byte 类型数值. double doubleValue(): 将当前对象转换为 double 类型数值. float floatValue(): 将当前对象转换为 float 类型数值. int intValue(): 将当前对象转换为 int 类型数值. long longValue(): 将当前对象转换为 long 类型数值. short shortValue(): 将当前对象转换为 short 类型数值.
  3. compareTo() 方法 int compareTo(数值包装类对象): 返回 0, 表示数值相等; 返回负数, 此对象小于参数对象; 返回正数, 此对象大于参数对象.
  4. 字符串转换为基本数据类型 static int parseInt(String s): 将字符串转换为有符号的十进制正数. static int parsetInt(String s, int radix): 将字符串转换为指定进制的有符号正数.
  5. 基本数据类型转换为字符串 static String toString(int i): 将正数转换为有符号表示的十进制字符串. static String toString(int i, int radix): 将正数转换为指定进制的有符号表示的字符串.
Character 类



Character 类是 char 类型的包装类. 常用方法如下:



  1. Character(char value): 构造方法, 通过 char 值创建一个新的 Character 对象.
  2. char charValue(): 返回此 Character 对象的值.
  3. int compareTo(Character anotherCharacter): 返回0, 表示该对象等于参数对象; 返回负数, 表示该对象小于参数对象; 返回正数, 表示该对象大于参数对象.
Boolean 类



Boolean 类是 boolean 类型的包装类.



  1. 构造方法 Boolean(boolean value): 通过一个 booelan 值创建一个 Boolean 对象. Boolean(String s): 通过字符串创建 Boolean 对象. s 不能为 null. 如果 s 是忽略大小写 “true”, 则转换为 true, 其他字符串转换为 false.
  2. int compareTo()方法
  3. 字符串转换为 Boolean 类型 static Boolean parseBoolean(String s): 将字符串转换为对应的 boolean 类. s 不能为 null. 如果 s 是忽略大小写的 “true”, 则转换为 true, 其他字符串转换为 false.
自动装箱/拆箱



自动装箱: 自动地将基本数据类型的数值转换为对应的包装类对象.



自动拆箱: 自动将包装类对象转换为对应的基本数据类型.



在自动装箱/拆箱时, 要避免空对象.



Math 类



java.lang.Math 类是 final 的, 无法被继承.


舍入方法


static double ceil(double a): 返回大于或等于 a 的最小整数.


static double floor(double a): 返回小于或等于 a 的最大整数.


static int round(float a): 四色五入.



最大/小值


static int min(int a, int b): 返回两个 int 中的最小值.


static int min(long a, long b): 返回两个 long 中的最小值.


static int min(float a, float b): 返回两个 float 中的最小值.


static int min(double a, double b): 返回两个 double 中的最小值.


绝对值


static int/long/float/double abs(int/long/float/double a): 返回 a 的绝对值.


随机值


static double random(): 返回大于或等于 0, 小于或等于 1.0 的随机数.


常量


PI: 圆周率.


E: 自然对数的底数.


大数值

BigInteger


java.math.BigInteger 是不可变的任意精度的大整数. 其构造方法有很多, 其中字符串参数的构造方法有:


BigInteger(String val): 将十进制字符串 val 转换为 BigInteger 对象.


BigInteger(String val, int radix): 将指定进制的字符串转换为 BigInteger 对象.


常用方法:


int compareTo(BigInteger val): 意义与其他类的 compareTo() 方法相同.


BigInteger add(BigInteger val): 加法运算


BigInteger substract(BigInteger val): 减法运算


BigInteger multiply(BigInteger val): 乘法运算


BigInteger divide(BigInteger val): 除法运算


BigInteger 继承了抽象类 Number, 它实现了 Number 的 6 个方法.


BigDecimal


java.math.BigDecimal 是不可变的任意精度的有符号十进制数.


构造方法:



BigDecimal(BigInteger val): 将 BigInteger 对象转换为 BigDecimal 对象.


BigDecimal(double val): 将 double 转换为 BigDecimal 对象, 参数 val 是 double 类型的二进制浮点值准确的十进制表示形式.


BigDecimal(int val): 将 int 转换为 BigDecimal 对象.


BigDecimal(long val): 将 long 转换为 BigDecimal 对象.


BigDecimal(String val): 将字符串表示的数值转换为 BigDecimal 对象.


常用方法:


int compareTo(BigDecimal val):


BigDecimal add(BigDecimal val): 加运算.


BigDecimal substract(BigDecimal val): 减运算


BigDecimal mutiply(BigDecimal val): 乘运算


BigDecimal divide(BigDecimal val): 除运算


BigDecimal 继承了抽象类 Number, 它实现了抽象类 Number 的 6 个方法.


日期时间相关类


Java 8 之前日期类是 java.util.Date, 该类比较古老, 很多方法已经废弃. Java 8 之前与日期时间相关的类还有 DateFormat (日期格式化)、Calendar (日历类)、TimeZone (时区类).


Java SE 核心类中有两个 Date, 分别是 java.util.Date 和 java.sql.Date. 前者是日期时间类, 后者是 JDBC 中的日期字段类型.

Date 类


构造方法:


Date(): 用当前时间创建 Date 对象, 精确到毫秒.


Date(long date): 指定标准基准时间以来的毫秒数创建 Date 对象. 标准基准时间是格林威治时间 1970 年 1 月 1 日 00:00:00.


常用方法:


boolean after(Date when): 测试此日期是否在指定日期后.


boolean before(Date when): 测试此日期是否在指定日期前.


int compareTo(Date anotherDate): 比较两个日期的顺序. 日期相等返回 0, 如果此日期小于参数日期, 返回值小于 0; 此日期大于参数日期, 则返回值大于 0.


long getTime(): 返回自标准基准时间以来此 Date 对象的毫秒数.


void setTime(long time): 用毫秒数设置日期对象, time 是自标准基准时间以来的毫秒数.


日期格式化和解析


DateFormat 类中提供日期格式化和日期解析方法, 具体如下:


String format(Date date): 将一个 Date 格式化为日期/时间字符串.


Date parse(String source): 从给定字符串的开始解析文本, 以生成一个日期对象. 如果解析失败则抛出 ParseException.


DateFormat是一个抽象类, 常用具体类是 java.text.SimpleDateFormat. 该类的构造方法有:


SimpleDateFormat(): 用默认模式和默认语言环境的日期格式符号构造 SimpleDateFormat.


SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat. pattern 参数是日期和时间格式模式. 常用日期和时间格式模式如下:


int java 数据库 枚举 java的枚举类_java_02


日期格式化既可以将日期对象转换为特定格式的字符串, 也可以将特定格式的字符串转换为日期对象.


Calendar 类


java.util.Calendar 类是一个抽象类, 不能直接实例化, 但通过静态工厂方法getInstance()可以获得 Calendar 实例.


该类主要方法有:


static Calendar getInstance(): 使用默认时区和语言环境获得一个日历.


void set(int field, int value): 将给定的日历字段设置为给定值.


void set(int year, int month, int date): 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值.


Date getTime(): 返回一个表示此 Calendar 时间值 (从 1970 年 1 月 1 日 00:00:00 至现在的毫秒数) 的 Date 对象.


boolean after(Object when): 判断此 Calendar 表示的时间是否在指定时间之后, 返回判断结果.


boolean before(Object when): 判断此 Calendar 表示的时间是否在指定时间之前, 返回判断结果.


int compareTo(Calendar anotherCalendar): 比较两个 Calendar 对象表示的时间值.


void clear(): 清除 Calendar 实例之前设置的各个字段的值.


Java 8 新日期时间相关类


Java 8 之后提供了新的日期时间相关类、接口和枚举.


时间和日期


Java 8 之后提供了三个新的日期时间类: LocalDate、LocalTime 和 LocalDateTime, 它们都位于 java.time 包中. LocalDate 表示一个不可变的日期对象, LocalTime 表示一个不可变的时间对象, LocalDateTime 表示一个不可变的日期和时间.


这三个类并没有共有的构造方法, 使用静态工厂方法创建它们的对象. 主要有now()和of()方法.


now()方法说明如下:


static LocalDate now(): LocalDate 静态工厂方法, 该方法使用默认时区获得当前日期, 返回 LocalDate 对象.


static LocalTime now(): LocalTime 静态工厂方法, 该方法使用默认时区获得当前时间, 返回 LocalTime 对象.


static LocalDateTime now(): LocalDateTime 静态工厂方法, 该方法使用默认时区获得当前日期时间, 返回 LocalDateTime 对象.


of()方法说明如下:


static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second): 按照指定的年、月、日、小时、分钟和秒获得 LocalDateTime 实例, 将纳秒设置为零.


static LocalTime of(int hour, int minute, int second): 按照指定的小时、分钟和秒获取一个 LocalTime 实例.


static LocalDate of(int year, int month, int dayOfMonth): 按照指定的年、月和日获得一个 LocalDate 实例, 日期中年、月和日必须有效, 否则将抛出异常.


以上方法的参数取值范围:


int java 数据库 枚举 java的枚举类_字符串_03



日期格式化和解析


Java 8 提供的日期格式化类是 java.time.format.DateTimeFormatter, 该类本身没有提供日期格式化和日期解析方法, 这些方法有 LocalDate、LocalTime 和 LocalDateTime 提供.


日期格式化


String format(DateTimeFormatter formatter): 这三个类都有该方法, 参数 formatter 是 DateTimeFormatter 类型.


日期解析


日期解析方法是parse, 这三个类每一个都有两个重载的 parse 方法, 具体如下:


static LocalDateTime parse(CharSequence text): 使用默认格式从一个文本字符串获取一个 LocalDateTime 实例, 如 200-12-03T10:15:30.


static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter): 使用指定格式化, 从文本字符串获取 LocalDateTime 实例.


static LocalDate parse(CharSequence text): 使用默认格式从一个文本字符串获取一个 LocalDate 实例, 如 200-12-03T10:15:30.


static LocalDate parse(CharSequence text, DateTimeFormatter formatter): 使用指定格式化, 从文本字符串获取 LocalDate 实例.


static LocalTime parse(CharSequence text): 使用默认格式从一个文本字符串获取一个 LocalTime 实例, 如 200-12-03T10:15:30.


static LocalTime parse(CharSequence text, DateTimeFormatter formatter): 使用指定格式化, 从文本字符串获取 LocalTime 实例.


示例:


LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String text = dateTime.format(formatter);
 
LocalDateTime parseDateTime = LocalDateTime.parse("2018-08-18 08:58:18", formatter);