目录
java.util.Objects
Objects是在JDK1.7开始引入的一个工具类。此类包含static实用程序方法,用于操作对象或在操作前检查某些条件。
变量和类型 | 方法 | 描述 |
---|---|---|
static boolean | equals(Object a, Object b) | 返回 true如果参数相等,彼此 false其他。 |
static String | toString(Object o) | 返回调用的结果 toString对于非 null参数, "null"为 null的说法。 |
static String | toString(Object o, String nullDefault) | 如果第一个参数不是 null ,则返回在第一个参数上调用 toString的结果,否则返回第二个参数。 |
static int | hash(Object… values) | 为一系列输入值生成哈希码。 |
static int | hashCode(Object o) | 返回非的哈希码 null参数,0为 null的论点。 |
static boolean | isNull(Object obj) | 如果提供的参考是 null则返回 true,否则返回 false 。 |
static boolean | nonNull(Object obj) | 如果提供的参考是非 null返回 true,否则返回 false 。 |
static int | compare(T a, T b, Comparator<? super T> c) | 如果参数相同则返回0,否则返回 c.compare(a, b) 。 |
源码
public static <T> int compare(T a, T b, Comparator<? super T> c) {
return (a == b) ? 0 : c.compare(a, b);
}
----------------------------------------------------------------
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
//常用:相对于object类的equals,其不会发送空指针异常
----------------------------------------------------------------
public static String toString(Object o) {
return String.valueOf(o);
}
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
----------------------------------------------------------------
public static String toString(Object o, String nullDefault) {
return (o != null) ? o.toString() : nullDefault;
}
----------------------------------------------------------------
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
----------------------------------------------------------------
public static boolean isNull(Object obj) {
return obj == null;
}
----------------------------------------------------------------
public static boolean nonNull(Object obj) {
return obj != null;
}
java.lang.Math
Math类是数学操作类,提供了一系列用于数学运算的静态方法。
变量和类型 | 方法 | 描述 |
---|---|---|
static double | abs(double a) | 返回 double值的绝对值 |
static float | abs(float a) | 返回 float值的绝对值。 |
static int | abs(int a) | 返回 int值的绝对值。 |
static long | abs(long a) | 返回 long值的绝对值。 |
static int | addExact(int x, int y) | 返回其参数的总和,如果结果溢出 int则抛出异常。 |
static long | addExact(long x, long y) | 返回其参数的总和,如果结果溢出 long则抛出异常。 |
static double | ceil(double a) | 返回大于或等于参数且等于数学整数的最小值(最接近负无穷大) double 。 |
static double | floor(double a) | 返回小于或等于参数且等于数学整数的最大值(最接近正无穷大) double 。 |
static long | round(double a) | 返回与参数最接近的 long ,并将关系四舍五入为正无穷大。 |
static int | round(float a) | 返回与参数最接近的 int ,并将关系四舍五入为正无穷大。 |
static T(double/float/int/long) | max(Ta, Tb) | 返回两个 T值中较大的 T。 |
static T(double/float/int/long) | min(Ta, Tb) | 返回两个 T值中较小的 T。 |
static double | random() | 返回带有正号的 double值,大于或等于 0.0且小于 1.0 。 |
注意:
round表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5再向下取整。例:Math.round(11.5)的结果为12。
java.util.Arrays
该类包含用于操作数组的各种方法(例如排序和搜索)。 此类还包含一个静态工厂,允许将数组视为列表。
变量和类型 | 方法 | 描述 |
---|---|---|
static int[] | copyOf(int[] original, int newLength) | 使用零复制指定的数组,截断或填充(如有必要),以使副本具有指定的长度。(动态扩容) |
static T List T | asList(T… a) | 返回由指定数组支持的固定大小的列表 |
static int | binarySearch(Object[] a, Object key) | 使用二进制搜索算法(二分查找)在指定的数组中搜索指定的对象(下标) |
static int[] | copyOfRange(int[] original, int from, int to) | 将指定数组的指定范围复制到新数组中。 |
static boolean | equals(T[] a, T[] a2) | 如果两个指定的T类型数组彼此(内容)相等 ,则返回 true 。 |
static void | fill(int[] a, int val) | 将指定的int值分配给指定的int数组的每个元素。 |
static void | fill(Object[] a, Object val) | 将指定的Object引用分配给指定的Objects数组的每个元素。 |
static int | mismatch(int[] a, int[] b) | 查找并返回两个 int数组之间第一个不匹配的索引,否则如果未找到不匹配则返回-1。 |
static void | parallelSort(int[] a) | 将指定的数组按升序排序。 |
static void | parallelSort(int[] a, int fromIndex, int toIndex) | 将指定的数组范围按数字升序排序。 |
static void | sort(int[] a) | 将指定的数组按升序排序。 |
static void | sort(int[] a, int fromIndex, int toIndex) | 按升序对数组的指定范围进行排序。 |
static String | toString(int[] a) | 返回指定数组内容的字符串表示形式。 |
java.math.BigDecimal
float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。
对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算结果,则必须使用BigDecimal类。
一、BigDecimal使用示例
double a = 6.6;
double b = 1.1;
System.out.println(a+b);
//结果输出:7.699999999999999
BigDecimal b1 = new BigDecimal("6.6");
BigDecimal b2 = new BigDecimal("1.1");
BigDecimal b3 = b1.add(b2);
System.out.println(b3);
//结果输出:7.7
二、BigDecimal常用的构造方法
构造器 | 描述 |
---|---|
BigDecimal(double val) | 将 double转换为 BigDecimal ,它是 double的二进制浮点值的精确十进制表示形式。 |
BigDecimal(int val) | 将 int翻译成 BigDecimal 。 |
BigDecimal(String val) | 将 BigDecimal的字符串表示 BigDecimal转换为 BigDecimal 。 |
BigDecimal bigDouble = new BigDecimal(0.1);
BigDecimal bigInt = new BigDecimal(1);
BigDecimal bigString = new BigDecimal("0.1");
System.out.println(bigDouble);
System.out.println(bigInt);
System.out.println(bigString);
/**输出结果
0.1000000000000000055511151231257827021181583404541015625
1
0.1*/
为什么会出现这种情况呢?
JDK的描述:
1、参数类型为double的构造方法的结果有一定的不可预知性。有人可能认为在Java中写入newBigDecimal(0.1)所创建的BigDecimal正好等于 0.1(非标度值 1,其标度为 1),但是它实际上等于0.1000000000000000055511151231257827021181583404541015625。这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度的二进制小数)。这样,传入到构造方法的值不会正好等于 0.1(虽然表面上等于该值)。
2、另一方面,String 构造方法是完全可预知的:写入 newBigDecimal(“0.1”) 将创建一个 BigDecimal,它正好等于预期的 0.1。因此,比较而言,通常建议优先使用String构造方法。
三、BigDecimal的常用方法
变量和类型 | 方法 | 描述 |
---|---|---|
BigDecimal | abs() | 返回 BigDecimal其值是此的绝对值 BigDecimal ,其标为 this.scale() 。 |
BigDecimal | add(BigDecimal augend) | 返回 BigDecimal其值为 (this + augend) ,其比例为 max(this.scale(), augend.scale()) |
BigDecimal | divide(BigDecimal divisor) | 返回BigDecimal其值为(this / divisor) ,其首选比例为(this.scale() - divisor.scale()) ; 如果无法表示准确的商(因为它具有非终止的十进制扩展),则抛出ArithmeticException 。 |
BigDecimal | subtract(BigDecimal subtrahend) | 返回 BigDecimal其值为 (this - subtrahend) ,其比例为 max(this.scale(), subtrahend.scale()) 。 |
BigDecimal | multiply(BigDecimal multiplicand) | 返回 BigDecimal其值为 (this × multiplicand) ,其比例为 (this.scale() + multiplicand.scale()) 。 |
double | doubleValue() | 将 BigDecimal转换为 double 。 |
float | floatValue() | 将 BigDecimal转换为 float |
static BigDecimal | valueOf(double val) | 转换一个 double成 BigDecimal ,使用 double通过所提供的规范的字符串表示 Double.toString(double)方法。 |
string | toString() | 如果需要指数,则使用科学计数法返回此 BigDecimal的字符串表示形式。 |
boolean | equals(Object x) | 将此 BigDecimal与指定的 Object进行相等性比较。 |
java.text.SimpleDateFormat
SimpleDateFormat是一个用于以区域设置敏感的方式格式化和解析日期的具体类。 它允许格式化(日期→文本),解析(文本→日期)和规范化。
格式定义:
基础常用格式模板:yyyy-MM-dd HH:mm:ss
构造器 | 描述 |
---|---|
SimpleDateFormat() | 构造一个 SimpleDateFormat使用默认模式和日期格式符号默认 FORMAT区域设置。 |
SimpleDateFormat(String pattern) | 构造一个 SimpleDateFormat使用给定的模式和默认的默认日期格式符号 FORMAT区域设置。 |
变量和类型 | 方法 | 描述 |
---|---|---|
string | format(Date date) | 将Date格式化为日期时间字符串。 (DateFormat方法) |
Date | parse(String source) | 从给定字符串的开头解析文本以生成日期。(DateFormat方法) |
java.util.Calendar
Calendar类用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特点部分,比如年、月、日、时、分和秒等。Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后调用其对应的方法。
字段
变量和类型 | 字段 | 描述 |
---|---|---|
static int | DATE | get和 set字段编号表示当月的日期。 |
static int | DAY_OF_MONTH | get和 set字段编号表示当月的日期。 |
static int | DAY_OF_WEEK | 当前星期的第几天(星期天表示第一天,星期六表示第七天)。 |
static int | DAY_OF_WEEK_IN_MONTH | 当前月中的第几个星期 |
static int | DAY_OF_YEAR | 当前年中的第几天 |
static int | WEEK_OF_YEAR | 当前年中星期数 |
static int | WEEK_OF_MONTH | 当前月中星期数 |
static int | YEAR | 字段编号为 get和 set表示年份。 |
static int | MONTH | get和 set字段编号表示月份。 |
static int | HOUR | get和 set字段编号表示上午或下午的小时。 |
static int | MINUTE | get和 set字段编号表示小时内的分钟。 |
static int | SECOND | get和 set字段编号表示分钟内的秒 |
方法
变量和类型 | 方法 | 描述 |
---|---|---|
abstract void | add(int field, int amount) | 根据日历的规则,将指定的时间量添加或减去给定的日历字段。 |
int | get(int field) | 返回给定日历字段的值。 |
void | set(int field, int value) | 将给定的日历字段设置为给定值 |
void | set(int year, int month, int date) | 设置日历字段的值 YEAR , MONTH和 DAY_OF_MONTH 。 |
void | set(int year, int month, int date, int hourOfDay, int minute) | 设置日历字段的值 YEAR , MONTH , DAY_OF_MONTH , HOUR_OF_DAY和 MINUTE 。 |
void | set(int year, int month, int date, int hourOfDay, int minute, int second) | 设置字段中的值 YEAR , MONTH , DAY_OF_MONTH , HOUR_OF_DAY , MINUTE和 SECOND 。 |
void | setTime(Date date) | 使用给定的 Date设置此日历的时间 |
void | setTimeInMillis(long millis) | 从给定的long值设置此Calendar的当前时间。 |
void | setTimeZone(TimeZone value) | 使用给定的时区值设置时区。 |
String | toString() | 返回此日历的字符串表示形式。 |
java.lang.System
System类定义了一些与系统相关的属性和方法。
字段
变量和类型 | 字段 | 描述 |
---|---|---|
static PrintStream | err | “标准”错误输出流。 |
static InputStream | in | “标准”输入流。 |
static PrintStream | out | “标准”输出流。 |
方法
变量和类型 | 方法 | 描述 |
---|---|---|
static void | exit(int status) | 终止当前运行的Java虚拟机。 |
static void | gc() | 运行垃圾收集器。 |
static long | currentTimeMillis() | 以毫秒为单位返回当前时间。 |
static void | arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。 |
static Properties | getProperties() | 确定当前系统属性。 |
String
String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。
构造方法
构造器 | 描述 |
---|---|
String() | 初始化新创建的 String对象,使其表示空字符序列。 |
String(byte[] bytes) | 通过使用平台的默认字符集解码指定的字节数组构造新的 String 。 |
String(byte[] bytes, int offset, int length) | 通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String |
String(byte[] bytes, int offset, int length, String charsetName) | 通过使用指定的字符集解码指定的字节子 String构造新的 String 。 |
String(char[] value) | 分配新的 String ,使其表示当前包含在字符数组参数中的字符序列。 |
String(char[] value, int offset, int count) | 分配一个新的 String ,其中包含字符数组参数的子数组中的字符。 |
String(StringBuffer buffer) | 分配一个新字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。 |
String(StringBuilder builder) | 分配一个新字符串,其中包含当前包含在字符串构建器参数中的字符序列。 |
方法
变量和类型 | 方法 | 描述 |
---|---|---|
int | compareTo(String anotherString) | 按字典顺序比较两个字符串。 |
int | compareToIgnoreCase(String str) | 按字典顺序比较两个字符串,忽略大小写差异。 |
String | concat(String str) | 将指定的字符串连接到此字符串的末尾。 |
boolean | contains(CharSequence s) | 当且仅当此字符串包含指定的char值序列(字符串)时,才返回true。 |
boolean | endsWith(String suffix | 测试此字符串是否以指定的后缀结尾。 |
boolean | equals(Object anObject) | 将此字符串与指定的对象进行比较。 |
boolean | equalsIgnoreCase(String anotherString) | 将此 String与另一个 String比较,忽略了大小写。 |
byte[] | getBytes() | 使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中。 |
byte[] | getBytes(String charsetName) | 使用命名的字符集将此 String编码为字节序列,将结果存储到新的字节数组中。 |
int | hashCode() | 返回此字符串的哈希码。 |
int | indexOf(int ch) | 返回指定字符第一次出现的字符串中的索引。 |
int | indexOf(int ch, int fromIndex) | 返回指定字符第一次出现的此字符串中的索引,从指定索引处开始搜索 |
int | indexOf(String str) | 返回指定子字符串第一次出现的字符串中的索引。(如果符合则算子字符串首字母) |
int | indexOf(String str, int fromIndex) | 从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。 |
boolean | isEmpty() | 返回 true ,当且仅当, length()是 0 |
int | lastIndexOf(int ch) | 返回指定字符最后一次出现的字符串中的索引。 |
int | lastIndexOf(int ch, int fromIndex) | 返回指定字符最后一次出现的字符串中的索引,从指定的索引开始向后搜索。 |
int | lastIndexOf(String str) | 返回指定子字符串最后一次出现的字符串中的索引。 |
int | lastIndexOf(String str, int fromIndex) | 返回指定子字符串最后一次出现的字符串中的索引,从指定索引开始向后搜索。 |
int | length() | 返回此字符串的长度。 |
String | repeat(int count) | 返回一个字符串,其值为此字符串的串联重复 count次。 (jdk11方法) |
String | replaceAll(String regex, String replacement) | 将给定替换的给定 regular expression匹配的此字符串的每个子字符串替换。 |
String | replaceFirst(String regex, String replacement) | 将给定替换的给定 regular expression匹配的此字符串的第一个子字符串替换。 |
String[] | split(String regex) | 将此字符串拆分为给定 regular expression的匹配 项 。 |
boolean | startsWith(String prefix) | 测试此字符串是否以指定的前缀开头。 |
boolean | startsWith(String prefix, int toffset) | 从给定位置开始测试此字符串是否以指定的前缀开头。 |
String | strip() | 返回一个字符串,其值为此字符串,并删除了所有前导和尾随 white space 。 |
String | substring(int beginIndex) | 返回一个新的字符串,它包含字符串中索引beginIndex后的所有字符 |
String | substring(int beginIndex, int endIndex) | 返回一个新的字符串,它包含字符串中索引beginIndex到索引endIndex之间的所有字符 |
char[] | toCharArray() | 将此字符串转换为新的字符数组。 |
String | toLowerCase() | 使用默认语言环境的规则将此 String所有字符转换为小写。 |
String | toUpperCase() | 使用默认语言环境的规则将此 String所有字符转换为大写。 |
String | toString() | 这个对象(已经是一个字符串!) |
String | trim() | 返回一个字符串,其值为此字符串,删除了所有前导和尾随空格,其中space被定义为其代码点小于或等于 ‘U+0020’ (空格字符)的任何字符 |
static String | valueOf(char[] data) | 返回 char数组参数的字符串表示形式。 |
static String | valueOf(int i) | 返回 int参数的字符串表示形式。 |
static String | valueOf(Object obj) | 返回 Object参数的字符串表示形式。 |