一、Arrays 操作数组的工具类
1、static String toString(int[] a) 返回指定数组内容的字符串表示形式
2、static boolean equals(int[] a, int[] a2) 如果两个指定的int数组彼此相等 ,则返回 true
3、static boolean equals(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex) 如果指定范围内的两个指定的int数组彼此相等 ,则返回true
一般结束索引位置不包含
4、static String deepToString(Object[] a) 返回指定数组的“深层内容”的字符串表示形式
5、static boolean deepEquals(Object[] a1, Object[] a2) 如果两个指定的数组彼此深度相等 ,则返回 true
Arrays 工具类中数组拷贝相关方法
6、static int[] copyOf(int[] original, int newLength) 使用零复制指定的数组,截断或填充(如有必要),以使副本具有指定的长度
original :原数组
newLength :新数组的长度
新数组长度=原数组长度 ===>拷贝
新数组长度<原数组长度 ===>截取
新数组长度>原数组长度 ===>填充
默认从索引为0的位置开始拷贝
新数组,数据的拷贝是copyOf方法内部实现
7、Arrays工具类
升序排序
static void sort(int[] a) 将指定的数组按升序排序
static void sort(int[] a, int fromIndex, int toIndex) 按升序对数组的指定范围进行排序
static int binarySearch(int[] a, int key) 使用二进制搜索算法在指定的int数组中搜索指定的值。如果找不到返回 -插入点-1
static void fill(int[] a, int val) 将指定的int值分配给指定的int数组的每个元素
static void fill(int[] a, int fromIndex, int toIndex, int val) 将指定的int值分配给指定的int数组的指定范围的每个元素
二、String类
1、String 不可变长的字符序列
String类表示字符串
StringBuffer 可变长的字符序列,同步的|线程安全的
StringBuilder 可变长的字符序列,不同步|线程不安全,相对效率高
2、执行效率
StringBuilder > StringBuffer > String
3、== 比较对象地址
equals 可以实现比较对象内容
StringBuilder 与 StringBuffer的区别
StringBuffer : 线程安全的可变字符序列
StringBuilder : 一个可变的字符序列
共同点
都是字符序列,表示子串
底层都是字节数组(老版本jdk字符数组)
区别
String 不可变长字符序列
StringBuffer|StringBuilder 可变长字符序列
执行效率:
StringBuilder > StringBuffer > String
同步方面:
StringBuilder 线程不安全
StringBuffer 同步
StringBuilder|StringBuffer 与 String之间相互转换
StringBuilder|StringBuffer --> String
调用StringBuilder|StringBuffer的toString
new String(StringBuilder|StringBuffer)
String.valueOf(Object)
String --> StringBuilder|StringBuffer
StringBuilder|StringBuffer(String str)
三、包装类
1、含义
在设计类时为每个基本数据类型设计了一个对应的类进行代表
2、自动拆装箱
将基本类型和包装类进行自动的互相转换
自动装箱 : 基本 --> 引用
自动拆箱 : 引用 --> 基本
3、基本类型与包装类对象比较问题
两个int类型比较,值相等就相等
两个new Integer比较,肯定不相等,new就新的地址
int与Integer|new Integer比较,只要值相等就相等,因为会先自动拆箱,再比值
两个Integer比较,如果值 在[-128,127]之间返回缓冲区对象相等,否则返回new Integer不相等
四、Math类
1、数学相关类
static double abs(double a) 返回 double值的绝对值
static double ceil(double a)
(1)向上取整
static double floor(double a)
(2)向下取整
static double pow(double a, double b)
返回第一个参数的值,该值是第二个参数的幂
2、随机整数[min,max)
(int)(Math.random()(max-min)+min)
随机整数[min,max]
(int)(Math.random()(max-min+1)+min)
static long round(double a)
四舍五入
五、枚举
1、确定一种事物的所有可能或实例
2、枚举是类,特殊的枚举类型,具有枚举类型特殊的约束
定义枚举使用enum
枚举类中的字段默认为当前枚举类型的实例,修饰符默认为public static final
枚举类中可以根据需求定义成员,构造器…
枚举类中默认构造器私有化
自定义的枚举类型默认隐式的继承自 java.lang.Enum->这是所有Java语言枚举类型的公共基类
六、clone() 克隆
1、来自Object类clone()方法
2、Cloneable接口
对象的类型要求实现Cloneable,才具有克隆的能力
3、java.lang.CloneNotSupportedException
抛出此异常表示已调用类Object中的clone方法来克隆对象,但该对象的类未实现Cloneable接口
4、浅拷贝或浅克隆
当拷贝对象的时候,对象的属性如果为引用数据类型,属性所指向的对象不拷贝
5、深拷贝或深克隆
当拷贝对象的时候,对象的属性如果为引用数据类型,属性所指向的对象也拷贝一份
6、建议
当对象的属性是通过复杂的运算或者算法计算出来,在想要等到相同内容的对象时候可以使用clone克隆,提高效率
七、时间日期类型
java8之前
Date 类型
DateFormat类应该用于格式化和解析日期字符串
SimpleDateFormat是一个用于以区域设置敏感的方式格式化和解析日期的具体类
它允许格式化(日期→文本),解析(文本→日期)和规范化
java8新增时间日期API
Date,SimpleDateFormat 线程不安全的
JDK8当中提供的LocalTime
、LocalDate
、 LocalDateTime
等类型,线程安全,使用简单灵活