一、java.lang.Object类
1.1 Object根父类
Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
特别说明:String[]对象数组是Object[]子类,而int[]不是Object[]子类,它们都是Object的子类。
1.2 Object类的方法
- public String toString():建议实体Javabean重写,重写快捷键Alt+Insert。在Object类中默认返回对象的运行时类型@对象的hashCode十六进制值。
- public final native Class<?> getClass():返回当前对象的运行时类型。
- public native int hashCode():返回当前对象的hash值。
- public boolean equals(Object obj):比较当前对象与指定对象obj是否相等。在Object类中默认比较地址值(等价于==)。equals和hashCode方法要一起重写,重写快捷键Alt+Insert。
- protected native Object clone() throws CloneNotSupportedException:克隆当前对象。子类如果要在子类外部使用克隆功能,必须实现java.lang.Cloneable接口,并重写该方法。
- protected void finalize() throws Throwable:当当前对象被GC回收时,自动由GC调用。该方法从JDK9之后已被废弃。
- public final native void wait(long timeoutMillis) throws InterruptedException
- public final void wait(long timeoutMillis, int nanos) throws InterruptedException:当前对象作为同步锁对象,执行该方法,使得当前线程进入阻塞状态,并是否同步锁对象和CPU资源。直到时间到,或当前线程被其他唤醒。
- public final void wait() throws InterruptedException:当前对象作为同步锁对象,执行该方法,使得当前线程进入阻塞状态,并是否同步锁对象和CPU资源。直到当前线程被其他唤醒。
- public final native void notify():唤醒其中一个等待被唤醒的线程,而且只能唤醒以当前对象为同步锁对象的等待线程。
- public final native void notifyAll():唤醒所有等待被唤醒的线程,并且这些线程也以当前对象为同步锁对象。
- 上述wait、notify、notifyAll的5个方法必须由同步锁对象调用。
1.3 java.lang.Cloneable接口
该接口是一个标识型接口,不包含抽象方法。当一个类的对象需要支持克隆操作时,实现该接口,并重写Object类的clone方法即可。
二、Java的包装类
2.1 Java的包装类型
| 基本数据类型 | 包装类(java.lang包) | 缓存共享的常量对象 | |
|---|---|---|---|
| 1 | byte | Byte | [-128,127] |
| 2 | short | Short | [-128,127] |
| 3 | int | Integer | [-128,127] |
| 4 | long | Long | [-128,127] |
| 5 | float | Float | 无 |
| 6 | double | Double | 无 |
| 7 | char | Character | [0,127] |
| 8 | boolean | Boolean | true,false |
•包装类对象不可变,部分包装类有缓存对象
•包装类与对应基本数据类型之间支持自动装箱与自动拆箱
•两个包装类对象进行==和!=比较是直接比较地址值,遇到其他运算符拆箱为基本数据类型值计算
•一个包装类对象与一个基本数据类型值使用运算符计算,都会将包装类拆箱为基本数据类型值计算
2.2 包装类的相关方法
1、获取包装类对象
-
public static Integer valueOf(int i):获取Integer对象
-
public static Integer valueOf(String s) throws NumberFormatException:将字符串转为Integer对象
其他包装类类似,从JDK9开始,包装类的构造器被废弃了
2、将字符串转为基本数据类型值
-
public static int parseInt(String s) throws NumberFormatException:将字符串的整数值转为int型整数值
-
public static double parseDouble(String s) throws NumberFormatException:将字符串类型的小数值转为double型的小数值
-
public static boolean parseBoolean(String s):将字符串类型的true或false转为boolean类型的布尔值
-
除Character外,7种包装类都有上述对应方法
-
public char charAt(int index):将字符串中的[index]位置的字符取出来
3、获取某种数据类型最大值、最小值
-
Integer.MAX_VALUE:int最大值
-
Integer.MIN_VALUE:int最小值
-
除Boolean外, 7种包装类都有上述常量值
4、比较相等
- boolean equals(Object obj):包装类都重写了Object类的equals方法,比较两个包装类对象的值
5、比较大小
-
Integer类 public static int compare(int x, int y):比较两个int值大小关系。x>y返回正整数,x=y返回0,x<y返回负整数。
-
Double类 public static int compare(double x, double y):比较两个double值大小关系。x>y返回正整数,x=y返回0,x<y返回负整数。
-
8种包装类都有对应的compare方法。
6、转进制(以Integer为例)
-
public static String toBinaryString(int i):将十进制int值转为二进制
-
public static String toOctalString(int i) :将十进制int值转为八进制
-
public static String toHexString(int i) :将十进制int值转为十六进制
7、字符处理和判断(Character类)
-
public static char toLowerCase(char ch):转为小写字母
-
public static char toUpperCase(char ch):转为大写字母
-
public static boolean isDigit(char ch):ch字符是不是一个数字字符
-
public static boolean isLetter(char ch):ch字符是不是一个字母
-
public static boolean isLetterOrDigit(char ch):ch字符是不是一个数字字符或字母
-
public static boolean isWhitespace(char ch):ch字符是不是一个空白字符
三、数学计算工具类
3.1 相关的类
-
java.lang.Math类:包含用于执行基本数学运算的方法,如随机值、绝对值、最大最小值、平方根、初等指数、对数和三角函数等,还包含圆周率PI、自然对数的底数E等。
-
java.math.BigInteger:用于表示不可变的任何精度的整数。
-
java.math.BigDecimal:用于表示不可变的任意精度的小数。
-
java.util.Random:用于产生各种基本数据类型的伪随机值。
3.2 java.lang.Math类
public static final double E:自然底数
public static final double PI:圆周率
public static double random():随机产生并返回[0,1)范围的double值。
public static double abs(double a):求绝对值。支持int、long、float、double四种重载形式。
public static double max(double a, double b):求a,b的最大值。支持int、long、float、double四种重载形式。
public static double min(double a, double b) :求a,b的最小值。支持int、long、float、double四种重载形式。
public static double floor(double a) :对a进行向下取整。
public static double ceil(double a):对a进行向上取整。
public static long round(double a):对a进行四舍五入。 相当于(int)(a+0.5)。
public static double sqrt(double a):求a的平方根值。
public static double cbrt(double a):求a的立方根值。
public static double pow(double a, double b):求
public static double exp(double a):求
public static double log(double a):求
public static double log10(double a):求
还有sin,cos,tan,asin,acos,atan等三角函数。
3.3 java.math.BigInteger类
-
public BigInteger(String val):创建BigInteger对象。
-
public BigInteger abs():求绝对值
-
public BigInteger add(BigInteger val):求this与val的和,即 this + val。
-
public BigInteger subtract(BigInteger val):求this与val的差,即this - val。
-
public BigInteger multiply(BigInteger val):求this与val的乘积,即this × val。
-
public BigInteger divide(BigInteger val):求this与val的商,即this ÷ val。
-
public BigInteger remainder(BigInteger val):求this与val的余数,即this % val。
-
public BigInteger[] divideAndRemainder(BigInteger val):求this与val的商和余数。
-
public BigInteger pow(int exponent):求this的exponent幂次方。
-
public BigInteger max(BigInteger val):求this和val的最大值。
-
public BigInteger min(BigInteger val):求this和val的最小值。
3.4 java.math.BigDecimal类
-
public BigDecimal(String val):创建BigDecimal对象。
-
public BigDecimal abs():求绝对值
-
public BigDecimal add(BigDecimal val):求this与val的和,即 this + val。
-
public BigDecimal subtract(BigDecimal val):求this与val的差,即this - val。
-
public BigDecimal multiply(BigDecimal val):求this与val的乘积,即this × val。
-
public BigDecimal divide(BigDecimal val):求this与val的商,即this ÷ val,要求能除尽。
-
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode):求this与divisor的商,结果保留scale位小数,对于第scale+1位出来方式由roundingMode指定的舍入模式决定。
-
public BigDecimal remainder(BigDecimal val):求this与val的余数,即this % val。
-
public BigDecimal pow(int n):求this的n幂次方。
-
public BigDecimal max(BigInteger val):求this和val的最大值。
-
public BigDecimal min(BigInteger val):求this和val的最小值。
3.5 java.util.Random类
-
public Random() :默认使用系统时间作为随机种子,创建Random 对象。
-
public Random(long seed) :指定随机种子,创建Random 对象。随机种子相同的两个Random()对象,将生成并返回相同的数字序列。
-
public boolean nextBoolean() :随机产生1个boolean值。
-
public double nextDouble() :随机产生1个[0,1)的double值。
-
public float nextFloat() :随机产生1个[0,1)的float值。
-
public int nextInt() : 随机产生1个int值。
-
public int nextInt(int n) :随机产生1个[0,n)范围的int值。
-
public long nextLong():随机产生1个long值。
-
public void nextBytes(byte[] bytes) :随机产生一组byte值,放到bytes数组中。
四、系统工具类
4.1 java.lang.System类
在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
-
public static final InputStream in:“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
-
public static final PrintStream out:“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
-
public static final PrintStream err:“标准”错误输出流。此流已打开并准备接受输出数据。按照惯例,此输出流用于显示错误消息。
-
public static void setIn(InputStream in):重新分配“标准”输入流。
-
public static void setOut(PrintStream out):重新分配“标准”输出流。
-
public static void setErr(PrintStream err):重新分配“标准”错误输出流。
-
public static Properties getProperties():确定当前的系统属性。
-
public static void setProperties(Properties props):将系统属性设置为 Properties 参数。
-
public static String getProperty(String key):获取指定键指示的系统属性。
-
public static String setProperty(String key,String value):设置指定键指示的系统属性。
-
public static String clearProperty(String key):移除指定键指示的系统属性。
-
public static long currentTimeMillis():返回以毫秒为单位的当前时间。当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。
-
public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。
-
public static void gc():运行垃圾回收器。
-
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):从指定源数组src中复制length个元素到一个目标数组dest , 将src数组的[srcPos, srcPos+length)元素复制到dest数组的[destPos, destPos+length)。
4.2 java.lang.Runtime类
每个 Java 应用程序都有唯一的一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时类的实例对象。
-
public static Runtime getRuntime():返回与当前 Java 应用程序相关的运行时对象。
-
public native long totalMemory():返回 Java 虚拟机中的内存总量。
-
public native long maxMemory():返回 Java 虚拟机试图使用的最大内存量。
-
public native long freeMemory():返回 Java 虚拟机中的空闲内存量。
-
public void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。 System.exit 方法是调用此方法的一种传统而便捷的方式。
-
public void gc():运行垃圾回收器。方法 System.gc() 是调用此方法的一种传统而便捷的方式。
五、日期时间工具类
5.1 日期时间工具类
Java核心类库中提高了3代日期时间API:
第1代
-
java.util.Date类:表示特定的瞬间,精确到毫秒。
-
java.text.SimpleDateFormat类:一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)。
第2代
-
java.util.Calendar类:是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
-
java.util.Locale类:表示了特定的地理、政治和文化地区。例如:Locale.CHINA
-
java.util.TimeZone类:表示时区偏移量,也可以计算夏令时。例如: TimeZone.getTimeZone(“America/Los_Angeles”) 或 TimeZone. getDefault()。
第3代
-
java.time.Instant类:在时间线上的瞬间点。这可能用于在应用程序中记录事件时间戳。类似于第1代的Date类。
-
java.time.LocalDate / java.time.LocalTime / java.time.LocalDateTime类:本地日期 / 本地时间 / 本地日期时间
-
java.time.ZoneId类:一个时区ID,如Europe/Paris。
-
java.time.ZoneOffset类:与格林威治/ UTC的时区偏移量,如+02:00。
-
java.time.ZonedDateTime类:具有时区的日期时间。
-
java.time.Period类: ISO-8601日历系统中的日期时间,例如“2年3个月4天”。
-
java.time.Duration类:基于时间的时间量,如'34.5秒'。
-
java.time.Year / java.time.Month / java.time.YearMonth / java.time.MonthDay / java.time.DayOfWeek 类:年份 / 月份 / 年份月份 / 月份日期 / 星期
-
java.time.format.DateTimeFormatter类:用于打印和解析日期时间对象。 类似于第1代的SimpleDateFormat类。
5.2 第1代
5.2.1 java.util.Date类
-
public Date():获取当前系统时间,精确到毫秒。
-
public Date(long date):获取距离1970 年 1 月 1 日 00:00:00 GMT以来经过date毫秒数的系统时间。
-
public long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
-
public String toString():把此 Date 对象转换为以下形式的字符串: week mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
==第1代与第三代的转换:==
-
public Instant toInstant():将此Date对象转换为Instant。
-
public static Date from(Instant instant):将Instant对象转为Date对象。
5.2.2 java.text.SimpleDateFormat类
-
public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
-
public final String format(Date date):将一个 Date 格式化为日期/时间字符串。
-
public Date parse(String source)throws ParseException:从给定字符串的开始解析文本,以生成一个日期。
5.3 第2代
5.3.1 java.util.Calendar类
-
Calendar.YEAR / MONTH / DATE / DAY_OF_YEAR 等常量字段。
-
public static Calendar getInstance():使用默认时区和语言环境获得一个日历。
-
public static Calendar getInstance(TimeZone zone,Locale aLocale):使用指定时区和语言环境获得一个日历。
-
public TimeZone getTimeZone():获得时区。
-
public void set(int field, int value) :将给定的日历字段设置为给定值。field是Calendar类的YEAR等常量字段值。
-
public int get(int field):返回给定日历字段的值。field是Calendar类的YEAR等常量字段值。
-
public long getTimeInMillis():返回此 Calendar 的时间值,以毫秒为单位。
-
public void setTimeInMillis(long millis):用给定的 long 毫秒值设置此 Calendar 的当前时间值。
-
public final void set(int year,int month, int date):设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()。
-
public final void set(int year,int month,int date,int hourOfDay,int minute,int second):设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。
-
public int getActualMaximum(int field):给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。例如:二月份最大值可能是28或29。
==第1代与第2代的转换:==
-
public Date getTime():返回一个表示此 Calendar 时间值的 Date 对象。
-
public final void setTime(Date date):使用给定的 Date 设置此 Calendar 的时间。
5.3.2 java.util.TimeZone类
-
public static TimeZone getDefault():获取此主机的默认 TimeZone。
-
public static TimeZone getTimeZone(String ID):获取给定 ID 的 TimeZone。例如 “America/Los_Angeles”,获自定义 ID(如 "GMT-8:00")。
-
public static String[] getAvailableIDs():获取受支持的所有可用 ID。
5.3.3 java.util.Locale类
-
Locale.CHINA 、CHINESE、 CANADA、US、ENGLISH 等常量。
-
public static Locale getDefault():获得此 Java 虚拟机实例的当前默认语言环境值。
-
public Locale(String language, String country):根据语言和国家/地区构造一个语言环境。例如zh代表中文,CN代表中国。
5.4 第3代
5.3.1 java.time.Instant类
| 返回值 | 方法 | 描述 |
|---|---|---|
| Instant | now() | 从系统时钟获取当前瞬间。本初子午线的系统时间。 |
| Instant | ofEpochMilli(long epochMilli) | 距离1970-1-1 0:0:0过了epochMilli毫秒的系统时间 |
| Instant | ofEpochSecond(long epochSecond) | 距离1970-1-1 0:0:0过了epochSecond秒的系统时间 |
5.3.2 java.time.LocalDate类
| 返回值 | 方法 | 描述 |
|---|---|---|
| LocalDate | now() now(ZoneId zone) | 静态方法,按照平台默认的时区创建LocalDate对象 静态方法,按照指定时区创建LocalDate对象 |
| LocalDate | of(int year, int month, int dayOfMonth) | 静态方法,根据指定日期创建LocalDate对象 |
| int | getYear() getMonthValue() getDayOfMonth() getDayOfYear() lengthOfMonth() lengthOfYear() | 获取年份值 获得月份值(1-12) 获得在月份中的天数(1-31) 获得在年中的天数(1-366) 获取当月的总天数 获取当年的总天数 |
| Month | getMonth() | 获取月份对象, 返回一个Month枚举值 |
| DayOfWeek | getDayOfWeek() | 获得星期几(返回一个 DayOfWeek 枚举值) |
| LocalDate | withYear(int year) withMonth(int month) withDayOfMonth(int dayOfMonth) withDayOfYear(int dayOfYear) with(TemporalAdjuster t) | 更改年份值返回一个新LocalDate对象 更改月份值返回一个新LocalDate对象 更改日期值返回一个新LocalDate对象 更改当年第几天的值返回一个新LocalDate对象 更改对应的Period返回一个新LocalDate对象 |
| LocalDate | plusYears(long years) plusMonths(long minute) plusWeeks(long weeks) plusDays(long days) plus(TemporalAmount t) | 增加几年返回新LocalDate对象 增加几月返回新LocalDate对象 增加几周返回新LocalDate对象 增加几日返回新LocalDate对象 增加一个Period返回新LocalDate对象 |
| LocalDate | minusYears(long years) minusMonths(long minute) minusWeeks(long weeks) minusDays(long days) minus(TemporalAmount t) | 减少几年返回新LocalDate对象 减少几月返回新LocalDate对象 减少几周返回新LocalDate对象 减少几日返回新LocalDate对象 减少一个 Period返回新LocalDate对象 |
| boolean | isBefore(另一个LocalDate对象) isAfter(另一个LocalDate对象) | 比较两个LocalDate对象前后关系 |
| boolean | isLeapYear() | 判断是否是闰年(在LocalDate类中声明) |
| LocalDateTime | atTime(int hour, int minute, int second) | 基于当前日期指定时间返回一个LocalDateTime对象 |
5.3.3 java.time.LocalTime类
| 返回值 | 方法 | 描述 |
|---|---|---|
| LocalTime | now() now(ZoneId zone) | 静态方法,按照平台默认时区创建LocalTime对象 静态方法,按照指定时区创建LocalTime对象 |
| LocalTime | of(int hour, int minute, int second) | 静态方法,根据指定时间创建LocalTime对象 |
| int | getHour() getMinute() getSecond() | 获取当前时间对象的小时值 获取当前时间对象的分钟值 获取当前时间对象的秒值 |
| LocalTime | withHour(int hour) withMinute(int minute) withSecond(int second) with(TemporalAdjuster t) | 更改小时值返回一个新LocalTime对象 更改分钟值返回一个新LocalTime对象 更改秒值返回一个新LocalTime对象 更改时间值返回一个新LocalTime对象 |
| LocalTime | plusHours(long hours) plusMinutes(long minutes) plusSeconds(long seconds) plus(TemporalAmount t) | 增加几小时返回新LocalTime对象 增加几分返回新LocalTime对象 增加几秒返回新LocalTime对象 增加一个 Duration 返回新LocalTime对象 |
| LocalTime | minusHours(long hours) minusMinutes(long minutes) minusSeconds(long seconds) minus(TemporalAmount t) | 减少几小时返回新LocalTime对象 减少几分返回新LocalTime对象 减少几秒返回新LocalTime对象 减少一个 Duration 返回新LocalTime对象 |
| boolean | isBefore(另一个LocalTime对象) isAfter(另一个LocalTime对象) | 比较两个时间对象前后关系 |
| LocalDateTime | atDate(LocalDate date) | 基于当前时间指定日期返回一个LocalDateTime对象 |
5.3.4 java.time.LocalDateTime类
| 返回值 | 方法 | 描述 |
|---|---|---|
| LocalDateTime | now() now(ZoneId zone) | 静态方法,按照平台默认的时区创建LocalDateTime对象 静态方法,按照指定时区创建LocalDateTime对象 |
| LocalDateTime | of(int year, int month, int dayOfMonth, int hour, int minute, int second) of(LocalDate date, LocalTime time) | 静态方法,根据指定日期时间创建LocalDateTime对象 |
| int | getYear() getMonthValue() getDayOfMonth() getDayOfYear() getHour() getMinute() getSecond() | 获取年份值 获得月份(1-12) 获得在月份中的天数(1-31) 获得在年中的天数(1-366) 获取小时值 获取分钟值 获取秒值 |
| Month | getMonth() | 获取月份对象, 返回一个Month枚举值 |
| DayOfWeek | getDayOfWeek() | 获得星期几(返回一个 DayOfWeek 枚举值) |
| LocalDateTime | withYear(int year) withMonth(int month) withDayOfMonth(int dayOfMonth) withDayOfYear(int dayOfYear) withHour(int hour) withMinute(int minute) withSecond(int second) with(TemporalAdjuster t) | 更改年份值返回一个新LocalDateTime对象 更改月份值返回一个新LocalDateTime对象 更改日期值返回一个新LocalDateTime对象 更改当年第几天的值返回一个新LocalDateTime对象 更改小时值返回一个新LocalDateTime对象 更改分钟值返回一个新LocalDateTime对象 更改秒值返回一个新LocalDateTime对象 更改日期时间值返回一个新LocalDateTime对象 |
| LocalDateTime | plusYears(long years) plusMonths(long minute) plusWeeks(long weeks) plusDays(long days) plusHours(long hours) plusMinutes(long minutes) plusSeconds(long seconds) plus(TemporalAmount t) | 增加几年返回新LocalDateTime对象 增加几月返回新LocalDateTime对象 增加几周返回新LocalDateTime对象 增加几日返回新LocalDateTime对象 增加几小时返回新LocalDateTime对象 增加几分返回新LocalDateTime对象 增加几秒返回新LocalDateTime对象 增加一个Period或Duration返回新LocalDateTime对象 |
| LocalDateTime | minusYears(long years) minusMonths(long minute) minusWeeks(long weeks) minusDays(long days) minusHours(long hours) minusMinutes(long minutes) minusSeconds(long seconds) minus(TemporalAmount t) | 减少几年返回新LocalDateTime对象 减少几月返回新LocalDateTime对象 减少几周返回新LocalDateTime对象 减少几日返回新LocalDateTime对象 减少几小时返回新LocalDateTime对象 减少几分返回新LocalDateTime对象 减少几秒返回新LocalDateTime对象 减少一个 Period或Duration返回新LocalDateTime对象 |
| boolean | isBefore(另一个LocalDateTime对象) isAfter(另一个LocalDateTime对象) | 比较两个LocalDateTime对象前后关系 |
| LocalDateTime | ofInstant(Instant instant, ZoneId zone) | 从Instant和区域ID获取一个日期时间对象的实例。 |
| Instant | toInstant(ZoneOffset offset) | 指定时区偏移量返回一个Instant对象 |
| LocalDate | toLocalDate() | 返回一个LocalDate对象 |
| LocalTime | toLocalTime() | 返回一个LocalTime对象 |
| ZonedDateTime | atZone(ZoneId zone) | 将次日期时间与时区相结合以创建 ZonedDateTime,日期时间值不变,只是时区属性变了 |
5.3.5 java.time.ZoneId类
| 返回值 | 方法 | 描述 |
|---|---|---|
| ZoneId | of(String zoneId) | 静态方法,指定ID(例如Europe/Paris )获取一个 ZoneId的实例 |
| ZoneId | systemDefault() | 静态方法,获取平台默认的时区 |
| Set | getAvailableZoneIds() | 静态方法,获取所有有效ID |
5.3.6 java.time.ZoneOffset类
| 返回值 | 方法 | 描述 |
|---|---|---|
| ZoneOffset | of(String offsetId) | 静态方法,指定偏移量id( 例如:+02:00 )获取一个ZoneOffset的实例 |
| ZoneOffset | ofHours(int hours) | 静态方法,指定小时偏移量获取一个ZoneOffset的实例 |
5.3.7 java.time.ZonedDateTime类
| 返回值 | 方法 | 描述 |
|---|---|---|
| ZonedDateTime | now() now(ZoneId zone) | 静态方法,按照平台默认的时区创建ZonedDateTime对象 静态方法,按照指定时区创建ZonedDateTime对象 |
| ZonedDateTime | of(int year, int month, int dayOfMonth, int hour, int minute, int second,int nanoOfSecond, ZoneId zone) of(LocalDate date, LocalTime time, ZoneId zone) of(LocalDateTime localDateTime, ZoneId zone) | 静态方法,根据指定日期时间和时区创建ZonedDateTime对象 |
| int | getYear() getMonthValue() getDayOfMonth() getDayOfYear() getHour() getMinute() getSecond() | 获取年份值 获得月份(1-12) 获得在月份中的天数(1-31) 获得在年中的天数(1-366) 获取小时值 获取分钟值 获取秒值 |
| ZoneId | getZone() | 获取时区 |
| Month | getMonth() | 获取月份对象, 返回一个Month枚举值 |
| DayOfWeek | getDayOfWeek() | 获得星期几(返回一个 DayOfWeek 枚举值) |
| ZonedDateTime | withYear(int year) withMonth(int month) withDayOfMonth(int dayOfMonth) withDayOfYear(int dayOfYear) withHour(int hour) withMinute(int minute) withSecond(int second) with(TemporalAdjuster t) | 更改年份值、月份值等值返回一个新的ZonedDateTime对象 |
| ZonedDateTime | plusYears(long years) plusMonths(long minute) plusWeeks(long weeks) plusDays(long days) plusHours(long hours) plusMinutes(long minutes) plusSeconds(long seconds) plus(TemporalAmount t) | 增加几年返回新ZonedDateTime对象 增加几月返回新ZonedDateTime对象 增加几周返回新ZonedDateTime对象 增加几日返回新ZonedDateTime对象 增加几小时返回新ZonedDateTime对象 增加几分返回新ZonedDateTime对象 增加几秒返回新ZonedDateTime对象 增加一个Period或Duration返回新ZonedDateTime对象 |
| ZonedDateTime | minusYears(long years) minusMonths(long minute) minusWeeks(long weeks) minusDays(long days) minusHours(long hours) minusMinutes(long minutes) minusSeconds(long seconds) minus(TemporalAmount t) | 减少几年返回新ZonedDateTime对象 减少几月返回新ZonedDateTime对象 减少几周返回新ZonedDateTime对象 减少几日返回新ZonedDateTime对象 减少几小时返回新ZonedDateTime对象 减少几分返回新ZonedDateTime对象 减少几秒返回新ZonedDateTime对象 减少一个 Period或Duration返回新ZonedDateTime对象 |
| ZonedDateTime | ofInstant(Instant instant, ZoneId zone) | 从Instant和区域ID获取一个日期时间对象的实例。 |
| Instant | toInstant(ZoneOffset offset) | 指定时区偏移量返回一个Instant对象 |
| LocalDate | toLocalDate() | 返回一个LocalDate对象 |
| LocalTime | toLocalTime() | 返回一个LocalTime对象 |
| LocalDateTime | toLocalDateTime() | 返回一个LocalDateTime对象 |
| ZonedDateTime | withZoneSameInstant(ZoneId zone) | 返回同一时刻另一个时区的本地时间,时区不同,日期时间值不同 |
| ZonedDateTime | withZoneSameLocal(ZoneId zone) | 保留日期时间值,时区设置为另一个地方的时区 |
5.3.8 java.time.Period类
| 返回值 | 方法 | 描述 |
|---|---|---|
| Period | between(LocalDate startDateInclusive, LocalDate endDateExclusive) | 静态方法,基于两个本地日期对象返回Period对象,代表一段日期间隔 |
| Period | of(int years, int months, int days) ofYears(int years) ofMonths(int months) ofWeeks(int weeks) ofDays(int days) | 静态方法,基于years,months,weeks,days值创建Period对象 |
| int | getYears() getMonths() getDays() | 获取年数、月份数、日子数 |
| long | toTotalMonths() | 获取总月份数 |
| Period | withYears(int years) withMonths(int months) withDays(int days) | 更改年份值返回一个新Period对象 更改月份值返回一个新Period对象 更改日期值返回一个新Period对象 |
| Period | plusYears(long years) plusMonths(long minutes) plusDays(long days) plus(TemporalAmount t) | 增加几年返回新Period对象 增加几月返回新Period对象 增加几日返回新Period对象 增加一个Period返回新Period对象 |
| Period | minusYears(long years) minusMonths(long minutes) minusDays(long days) minus(TemporalAmount t) | 减少几年返回新Period对象 减少几月返回新Period对象 减少几日返回新Period对象 减少一个 Period返回新Period对象 |
5.3.9 java.time.Duration类
| 返回值 | 方法 | 描述 |
|---|---|---|
| Duration | between(Temporal startInclusive, Temporal endExclusive) | 静态方法,基于两个时间对象返回Duration对象,代表一段持续时间 |
| Duration | ofDays(long days) ofHours(long hours) ofMinutes(long minutes) ofSeconds(long seconds) | 静态方法,基于days,hours,minutes,seconds值创建Duration对象 |
| long | toDays() toHours() toMinute() toSeconds() | 持续时间换算为天数、小时数、分钟数、秒数等,向下取整 |
| Duration | withSeconds(long seconds) | 修改持续秒值返回新的Duration对象 |
| Duration | plusDays(long days) plusMinutes(long minutes) plusSeconds(long seconds) plusMillis(long millis) plus(Duration t) | 增加几小时返回新Duration对象 增加几分钟返回新Duration对象 增加几秒钟返回新Duration对象 增加几毫秒返回新Duration对象 增加一个Duration返回新Duration对象 |
| Duration | minusDays(long years) minusMinutes(long minutes) minusSeconds(long days) minusMillis(long millis) minus(Duration t) | 减少几小时返回新Duration对象 减少几分钟返回新Duration对象 减少几秒钟返回新Duration对象 减少几毫秒返回新Duration对象 减少一个 Duration返回新Duration对象 |
5.3.10 java.time.format.FormatStyle枚举类
| 类型 | 常量 | 描述 |
|---|---|---|
| FormatStyle | FULL | 全文风格,最多细节。例如,格式可能是“公元1952年4月12日星期二”或“太平洋标准时间下午3:30:42”。 |
| FormatStyle | LONG | 长文字风格,有很多细节。例如,格式可能是“1952年1月12日”。 |
| FormatStyle | MEDIUM | 中等文字风格,有一些细节。例如,格式可能是“1952年1月12日”。 |
| FormatStyle | SHORT | 短文本样式,通常为数字。例如,格式可能是“12 .13.52”或“下午3:30”。 |
5.3.11 java.time.format.DateTimeFormatter类
| 返回值 | 方法或常量 | 描述 |
|---|---|---|
| DateTimeFormatter | BASIC_ISO_DATE ISO_LOCAL_DATE ISO_LOCAL_TIME ISO_LOCAL_DATE_TIME ISO_DATE ISO_DATE ISO_DATE_TIME ...... | 例如“20111203” 例如“2011-12-03” 例如“10:15”或“10:15:30” 例如“2011-12-03T10:15:30” 例如“2011-12-03”或“2011-12-03 + 01:00” 例如“10:15”,“10:15:30”或“10:15:30 + 01:00” 例如“2011-12-03T10:15:30”,“2011-12-03T10:15:30 + 01:00”或“2011-12-03T10:15:30 + 01:00[欧洲/巴黎]” ...... |
| DateTimeFormatter | ofPattern(String pattern) | 静态方法,类似于SimpleDateFormat模式 |
| DateTimeFormatter | ofLocalizedDate(FormatStyle dateStyle) ofLocalizedTime(FormatStyle timeStyle) ofLocalizedDateTime(FormatStyle dateTimeStyle) | 静态方法,使用FormatStyle 枚举类对象创建DateTimeFormatter对象 |
| DateTimeFormatter | withZone(ZoneId zone) | 使用新的覆盖区域返回此格式化程序的副本。 |
| TemporalAccessor | parse(CharSequence text) | 将字符串解析为日期/时间对象 |
| String | format(TemporalAccessor temporal) | 将日期/时间对象格式化成字符串 |
六、比较器
6.1 java.lang.Comparable接口
要比较大小的对象类本身实现这个接口。例如:学生类的对象要比较大小,就让学生类实现Comparable接口即可。
- int compareTo(T t):如果this对象比t对象大,返回正整数;如果如果this对象比t对象小,返回负整数;如果this对象与t对象相等,返回零。
6.2 java.util.Comparator接口
单独编写一个类实现Comparator接口,然后这个实现类的对象就相当于一个工具类,用于按照某个规则比较某个类的两个对象。例如:单独编写一个类StudentAgeComparator实现Comparator接口,用于按照年龄大小比较Student学生类两个对象的大小。
- int compare(T t1, T t2):如果t1大于t2,返回正整数;如果t1小于t2,返回负整数;如果t1等于t2,返回零。
6.3 java.text.Collator类
字符串定制比较器。Collator 类执行区分语言环境的 String 比较。
- public static Collator getInstance():获取平台默认语言环境的字符串比较器对象。
- public static Collator getInstance(Locale desiredLocale)::获取指定语言环境的字符串比较器对象。
- public int compare(String source, String target):比较两个字符串的大小。
七、数组工具类
7.1 java.lang.System类
- public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):从指定源数组src中复制length个元素到一个目标数组dest , 将src数组的[srcPos, srcPos+length)元素复制到dest数组的[destPos, destPos+length)。
7.2 java.util.Arrays类
==注意:==所有方法,Arrays类都提供了八种基本数据类型的重载形式(下面只列出了int[]形式) 和 对象数组的重载形式。
1、拼接数组的元素
- public static String toString(int[] arr) :将arr数组的元素列表,拼接为字符串形式,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。形式为:[元素1,元素2,元素3。。。]。提供了八种基本数据类型的重载形式。
- public static String toString(Object[] arr) :将对象数组arr数组的元素列表,拼接为字符串形式,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。元素将自动调用自己从Object继承的toString方法将对象转为字符串进行拼接,如果没有重写,则返回类型@hash值,如果重写则按重写的toString方法返回的字符串进行拼接。
2、数组元素排序
-
public static void sort(int[] arr) :将arr数组中所有元素按照从小到大进行排序。
-
public static void sort(int[] arr, int fromIndex, int toIndex) :将arr数组的[fromIndex, toIndex)部分的元素按照升序排列。
-
public static void sort(Object[] arr):将对象数组arr所有元素按照元素的自然比较规则(即实现java.lang.Comparable接口的规则)进行升序排序。
-
public static void sort(Object[] arr,int fromIndex,int toIndex):将对象数组arr中[fromIndex, toIndex)部分的元素按照元素的自然比较规则(即实现java.lang.Comparable接口的规则)进行升序排序。
-
public static void sort(T[] arr, Comparator<? super T> comparator):将对象数组arr所有元素按照定制比较器规则(即实现java.lang.Comparator接口的规则)进行升序排序。
-
public static void sort(T[] a,int fromIndex,int toIndex,Comparator<? super T> c):将对象数组arr中[fromIndex, toIndex)部分的元素按照定制比较器规则(即实现java.lang.Comparator接口的规则)进行升序排序。
3、二分查找(首先要求数组必须有序)
-
public static int binarySearch(int[] arr, int key) :在arr数组中查找key的下标。如果有多个重复元素,返回第一次找到的。如果元素不存在,返回-插入点-1。所谓插入点就是如果将该元素插入到该数组中,它应该插入到哪个位置。
-
public static int binarySearch(int[] a,int fromIndex,int toIndex,int key):在arr数组[fromIndex, toIndex)范围查找key的下标。如果有多个重复元素,返回第一次找到的。如果元素不存在,返回-插入点-1。所谓插入点就是如果将该元素插入到该数组[fromIndex, toIndex)范围,它应该插入到哪个位置。
-
public static int binarySearch(Object[] arr, Object key):在对象数组arr中查找key的下标。使用元素的自然比较规则(即实现java.lang.Comparable接口的规则)比较元素大小。如果有多个重复元素,返回第一次找到的。如果元素不存在,返回-插入点-1。所谓插入点就是如果将该元素插入到该数组中,它应该插入到哪个位置。
-
public static int binarySearch(Object[] arr, int fromIndex, int toIndex, Object key):在对象数组arr的[fromIndex,toIndex)范围查找key的下标。使用元素的自然比较规则(即实现java.lang.Comparable接口的规则)比较元素大小。如果有多个重复元素,返回第一次找到的。如果元素不存在,返回-插入点-1。所谓插入点就是如果将该元素插入到该数组中,它应该插入到哪个位置。
-
public static int binarySearch(T[] arr, T key,Comparator<? super T> c):在对象数组arr中查找key的下标。使用定制比较器的规则(即实现java.lang.Comparable接口的规则)比较元素大小。如果有多个重复元素,返回第一次找到的。如果元素不存在,返回-插入点-1。所谓插入点就是如果将该元素插入到该数组中,它应该插入到哪个位置。
-
public static int binarySearch(T[] arr, int fromIndex,int toIndex,T key,Comparator<? super T> c):在对象数组arr的[fromIndex,toIndex)范围查找key的下标。使用定制比较器的规则(即实现java.lang.Comparable接口的规则)比较元素大小。如果有多个重复元素,返回第一次找到的。如果元素不存在,返回-插入点-1。所谓插入点就是如果将该元素插入到该数组中,它应该插入到哪个位置。
4、数组的复制
-
public static int[] copyOf(int[] original, int newLength) :创建一个长度为newLength的新数组。如果newLength<=orginal.length,那么将原数组original的[0, newLength)范围的元素复制到新数组中。如果newLength>orginal.length,那么将原数组original的所有元素复制到新数组中,新数组剩下的元素都是默认值。最后返回新数组。
-
public static int[] copyOfRange(int[] original, int from, int to) :创建一个长度为to-from的新数组。如果from>=orginal.length,将会报错。如果to>orginal.length,则将原数组original的[from, orginal.length)范围的元素复制到新数组中。如果to<=orginal.length,则将原数组original的[from, to)范围的元素复制到新数组中。最后返回新数组。
-
public static T[] copyOf(T[] original,int newLength):创建一个长度为newLength的新对象数组。如果newLength<=orginal.length,那么将原数组original的[0, newLength)范围的元素复制到新数组中。如果newLength>orginal.length,那么将原数组original的所有元素复制到新数组中,新数组剩下的元素都是默认值。最后返回新对象数组。
-
public static T[] copyOfRange(T[] original,int from,int to):创建一个长度为to-from的新对象数组。如果from>=orginal.length,将会报错。如果to>orginal.length,则将原数组original的[from, orginal.length)范围的元素复制到新数组中。如果to<=orginal.length,则将原数组original的[from, to)范围的元素复制到新数组中。最后返回新对象数组。
5、比较两个数组是否相等
- public static boolean equals(int[] a1, int[] a2) :比较两个数组的长度、元素是否完全相同
- public static boolean equals(Object[] a1,Object[] a2):比较两个对象数组的长度、元素是否完全相同
6、填充数组
-
public static void fill(int[] arr, int val) :将arr数组所有元素赋值为val值。
-
public static void fill(int[] arr, int fromIndex, int toIndex, int val):将arr数组[fromIndex,toIndex)范围的元素赋值为val值。
-
public static void fill(Object[] arr,Object val):将arr数组所有元素赋值为val对象的首地址。
-
public static void fill(Object[] arr, int fromIndex, int toIndex, Object val) :将arr数组[fromIndex,toIndex)范围的元素赋值为val对象首地址。
-
public static void setAll(int[] array, IntUnaryOperator generator):将array数组的元素用generator生成器的结果覆盖。generator生成器必须重写IntUnaryOperator 接口的int applyAsInt(int index)抽象方法。在setAll方法中会遍历所有元素,并将数组元素下标作为实参传给applyAsInt方法,applyAsInt方法的返回值用于为[index]位置的元素赋值。
-
setAll方法提供了4种重载形式,分别支持int[]、double[]、long[]、对象数组。
7、将元素添加到List集合
- public static List asList(T... args):将对象数组args的所有对象添加到一个不可变的List集合中。
8、将数组元素添加到Stream流中
- public static IntStream stream(int[] array):将array数组的元素添加到IntStream流中。
- public static IntStream stream(int[] array,int start,int end):将array数组[start,end)范围的元素添加到IntStream流中。
- 该方法提供了4种重载形式,分别支持int[]、double[]、long[]、对象数组,分别返回IntStream、DoubleStream、LongStream、Stream。