数组中常见的 算法:
1)数组元素的赋值(杨辉三角,回型数等)
2)求 数值型数组中元素的(最大值,最小值,平均值,总和等)
3)数组的 创建,复制,反转,查找(线性查找,二分查找)
4)数组元素的 排序算法()
4)互相转换
(数组->String,String->数组)
(Char->String,String->Char)// char[] chars1 = string.toCharArray(); //.
一.数组 (创建和复制):
1)创建:(3种)
String[] s1 = new String[]{"1", "2"};
String[] s2 = {"3", "4"};
String[] s3 = new String[10];
list.toAyyay()
2)数组的赋值机制:(老韩)(内存图)
a:基本数据类型,这个值就是具体的数据,而且互相不影响:(值传递 / 值拷贝)
b:数组在默认情况下是引用传递,赋的值是地址。(分析内存图:重要)(引用传递 / 地址拷贝)
c:内存分析:
3)数组复制:(3种)
String[] s1 = new String[]{"1", "2"};
String[] s2 = {"3", "4"};
String[] s3 = new String[10];
//1.复制 方式 一
String[] sc4 = new String[s1.length];
for (int i = 0; i < s1.length; i++) {
sc4[i] = s1[i];
}
System.out.println(Arrays.toString(sc4));
//2.复制 方式二
String[] strings = Arrays.copyOf(s1, 2);
System.out.println("strings : " + Arrays.toString(strings));
//3.复制 方式三
String[] strings1 = Arrays.copyOfRange(s1, 1, 2);
System.out.println("strings1 : " + Arrays.toString(strings1));
二.反转 :(3种)
1)数组 进行 反转 赋值,第一个 和 最后一个 调换 位置
2)创建一个长度相同的新的数组,反转赋值。
2)(手写)String 内部 字符串 反转
public static void main(String[] args) throws Exception {
String s2 = "{ 张三";
byte[] bytes = s2.getBytes(StandardCharsets.UTF_8);
byte temp;
for (int i = 0; i < bytes.length / 2; i++) {
temp = bytes[i];
bytes[i] = bytes[bytes.length - 1 - i];
bytes[bytes.length - 1 - i] = temp;
}
String s = new String(bytes, StandardCharsets.UTF_8);
System.out.println(s);
// byte[] bytes = "{ 张三".getBytes(StandardCharsets.UTF_8);
// String s = new String(bytes, StandardCharsets.UTF_8);
// System.out.println(s);
}
3)调用方法)String 内部 字符串 反转
String s2 = "for (int i = 0; i < s1.length / 2; i++) { 张三";
StringBuilder ss = new StringBuilder(s2).reverse();
System.out.println(ss);
四.Arrays 工具类:
1):排序 和 二分法查找:
int[] a = {1, 5, 3};
Arrays.sort(a);
int i = Arrays.binarySearch(a, 5);
System.out.println(i);
2):输出:
int[] a = {1, 5, 3};
System.out.println(Arrays.toString(a));