数组工具类
java.util.Arrays类
-
数组排序
-
static void sort(int[] a) :将a数组按照从小到大进行排序
-
static void sort(int[] a, int fromIndex, int toIndex) :将a数组的[fromIndex, toIndex)部分按照升序排列
-
static void sort(Object[] a) :根据元素的自然顺序对指定对象数组按升序进行排序。
-
static <T> void sort(T[] a, Comparator<? super T> c) :根据指定比较器产生的顺序对指定对象数组进行排序。
// sort 可以将数组从小到大排序 但是修改的是原数组 // Arrays.sort(numarr); // sort(数组,从哪开始,到哪结束(不包含结束位置)) 按照区域整理从小到大 // Arrays.sort(numarr,4,7); // System.out.println(Arrays.toString(numarr)); -
-
数组元素的二分查找
-
static int binarySearch(int[] a, int key)
-
static int binarySearch(Object[] a, Object key) :要求数组有序,在数组中查找key是否存在,如果存在返回第一次找到的下标,不存在返回负数
通过二分查找法 来找到你要查的内容的第一次出现的位置 // System.out.println(Arrays.binarySearch(numarr,0)); -
-
数组的复制
-
static int[] copyOf(int[] original, int newLength) :根据original原数组复制一个长度为newLength的新数组,并返回新数组
-
static <T> T[] copyOf(T[] original,int newLength):根据original原数组复制一个长度为newLength的新数组,并返回新数组
-
static int[] copyOfRange(int[] original, int from, int to) :复制original原数组的[from,to)构成新数组,并返回新数组
-
static <T> T[] copyOfRange(T[] original,int from,int to):复制original原数组的[from,to)构成新数组,并返回新数组
数组复制 copyOf(原数组,复制的个数(原数组.length))// int[] numarr1 = Arrays.copyOf(numarr,5); int[] numarr1 = Arrays.copyOf(numarr,numarr.length); System.out.println(Arrays.toString(numarr1)); // copyOfRange(原数组, 从谁开始, 到谁结束(不包含结束位置)) 数组复制 int[] numarr2 = Arrays.copyOfRange(numarr,3,7); System.out.println(Arrays.toString(numarr2)); -
-
比较两数组是否相等
-
static boolean equals(int[] a, int[] a2) :比较两个数组的长度、元素是否完全相同
-
static boolean equals(Object[] a,Object[] a2):比较两个数组的长度、元素是否完全相同
equals 比较是否相等 System.out.println(Arrays.equals(numarr,numarr1)); -
-
填充数组
-
static void fill(int[] a, int val) :用val值填充整个a数组
-
static void fill(Object[] a,Object val):用val对象填充整个a数组
-
static void fill(int[] a, int fromIndex, int toIndex, int val):将a数组[fromIndex,toIndex)部分填充为val值
-
static void fill(Object[] a, int fromIndex, int toIndex, Object val) :将a数组[fromIndex,toIndex)部分填充为val对象
-
Arrays.fill(numarr2,0);
System.out.println(Arrays.toString(numarr2));
字符串
String:
String aa = "123";就相当于char[] aa = {'1','2','3'};
因为String类是一个final 所以理论来说是不可改变的,
是因为每次修改并不是直接改变原本的对象
而是新建一个对象
String是一个不可改变的对象
静态方法:
-
static String copyValueOf(char[] data): 返回指定数组中表示该字符序列的 String
-
static String copyValueOf(char[] data, int offset, int count):返回指定数组中表示该字符序列的 String
-
static String valueOf(char[] data) : 返回指定数组中表示该字符序列的 String
-
static String valueOf(char[] data, int offset, int count) : 返回指定数组中表示该字符序列的 String
-
static String valueOf(xx value):xx支持各种数据类型,返回各种数据类型的value参数的字符串表示形式。
常用的方法
cha'rAt():返回[index]位置的字符;字符串也有长度length和索引下标;
length:返回字符串长度
拼接:
concat()拼接等价于"+";判断是否相等;
比较:
==比较的是内存地址 不同对象一定是false;
equals:比较的是哈希值,String已经重写该方法;
equalsIgnore():通过equals比较不区分大小写
compareTo():如果相等且大小写相等,发回0 不相等则返回差值;
compareToIgnorecase:不区分大小写比较字符串大小;
isEmpty():判断字符串是否为空
转换大小写:
tolowercase():向下 大写转小写;
touppercase():向上 小写转大写;
trim():清楚字符前后空格;
查找
contains(xx):是否包含xx;
indexof():从前向后查找第一次出现的位置返回值是索引下标;
LastIndexof():从后向前查找第一次出现的位置返回索引下标;
截取:
substring:一个参数 从谁开始 直接到结尾;
两个参数 从谁开始 到谁结束 (不包含)
返回值是一个新的字符串;
开头 结尾:
startswith:判断是否以xx开头;
ends with:判断是否以xx为结尾;
编码与解码:
getBytes():编码把字符串转换为字节数组;
new String ():解码;
替换:
replace:两个参数 一个旧的 一个新的 把旧的参数换成新的参数;
拆分:
split():需要以一个字符串作为拆分点 且拆分点的字符不会被打印,返回的是地址值需要toString接收;
StringBuffer,StringBuilder:
append:在末尾位置追加新内容 在原本的字符串中追加 会改变原本的变量;
insert:在offset位置添加新内容;
delete:删除 开始 结束(不包含);
setcharAT:替换 每次只能替换一个;
reverse:反转字符串;
setlength:设置字符串长度也可以截取内容;
repl:替换;
indexof:查找第一次出现的位置