1. Arrays
操作数组的工具类。
static String toString(int[] a) 返回指定数组内容的字符串表示形式。
static boolean equals(int[] a, int[] a2) 如果两个指定的int数组彼此 相等 ,则返回 true 。
static boolean equals(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)
如果指定范围内的两个指定的int数组彼此 相等 ,则返回true。
static String deepToString(Object[] a) 返回指定数组的“深层内容”的字符串表示形式。
static boolean deepEquals(Object[] a1, Object[] a2)
如果两个指定的数组彼此 深度相等 ,则返回 true 。
static int[] copyOf(int[] original, int newLength)
使用零复制指定的数组,截断或填充(如有必要),以使副本具有指定的长度。
original : 原数组
newLength : 新数组的长度
新数组长度=原数组长度 ===>拷贝
新数组长度<原数组长度 ===>截取
新数组长度>原数组长度 ===>填充
默认从索引为0的位置开始拷贝
新数组,数据的拷贝是copyOf方法内部实现
static int[] copyOfRange(int[] original, int from, int to)
将指定数组的指定范围复制到新数组中。
新数组是由copyOfRange方法内部创建
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。
目的地新数组由自己指定
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数组的指定范围的每个元素。
2. String
String 不可变长的字符序列
StringBuffer 可变长的字符序列,同步的|线程安全的
StringBuilder 可变长的字符序列,不同步|线程不安全,相对效率高
执行效率: StringBuilder > StringBuffer > String
String() 初始化新创建的 String对象,使其表示空字符序列。
String(String original) 初始化新创建的String对象,使其表示与参数相同的字符序列。
String(char[] value) 分配新的 String ,使其表示当前包含在字符数组参数中的字符序列。
String(char[] value, int offset, int count)
分配一个新的 String ,其中包含字符数组参数的子数组中的字符。
String(byte[] bytes)] 通过使用平台的默认字符集解码指定的字节数组构造新的 String 。
String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。
String(StringBuffer buffer) 分配一个新字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。
String(StringBuilder builder) 分配一个新字符串,其中包含当前包含在字符串构建器参数中的字符序列。
3. StringBuilder 与 StringBuffer
StringBuffer : 线程安全的可变字符序列。
StringBuilder :一个可变的字符序列。
此类提供与StringBuffer兼容的API,继承相同的父类AbstractStringBuilder,但不保证同步|线程不安全。
此类设计用作StringBuffer替代品,用于单个线程使用字符串缓冲区的位置(通常情况下)大量操作字符串。
在可能的情况下,建议使用此类优先于StringBuffer因为在大多数实现中它会更快。
注意: 以后某些结构底层使用数组存储数据,一般会存在默认的初始容量,减少扩容拷贝的次数,提高效率.
String , StringBuilder , StringBuffer 区别:
共同点:
1.都是字符序列,表示子串
2.底层都是字节数组(老版本jdk字符数组)
不同点 :
1.String 不可变长字符序列
StringBuffer|StringBuilder 可变长字符序列
2.执行效率:
StringBuilder > StringBuffer > String
3.同步方面:
StringBuilder 线程不安全
StringBuffer 同步