有关于数组的知识点。
提示:以下是本篇文章正文内容,下面案例可供参考
1、数组是一组相同类型数据的集合。
String[] arr = {"abc", "aer"};//{相同类型}
double[] arr2 = {1.2, 2.1, 3.5};
int[] arr3 = {1, 2, 3};```
2、数组的定义方式:
int[] array = {2,3,4,5};
int[] array2 = new int[10];
int[] array3 = new int[]{1,2,3,4};
3、初始化数组
int[] array = null;
//System.out.println(array.length);//会报空指针异常错误
主要三种方式:
(1)for循环;
(2)foreach;
(3)toString()方法,将数组转换为字符串后输出。
代码如下(示例):
int[] array = {2,3,4,5};
int[] array2 = new int[10];
int[] array3 = new int[]{1,2,3,4};
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
System.out.println();
for (int x: array) {
System.out.print(x+" ");
}
System.out.println();
System.out.println(Arrays.toString(array));
(1)封装好的方法:
Arrays.sort(array);
(2)自己实现冒泡排序(示例):
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
boolean flag = false;//标记是否需要排序
for (int j = 0; j < arr.length-1-i; j++) {
if(arr[j]>arr[j+1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
flag = true;
}
}
if(flag == false) {
return;
}
}
}
(3)封装好的方法:
int ret = Arrays.binarySearch(array4, 3);
(4)自己实现二分查找(示例):
public static int binarySearch(int[] arr,int target) {
int left = 0;
int right = arr.length-1;
int mid = (left+right)/2;
while (left<=right) {
if(arr[mid] == target) {
return mid;
}else if(arr[mid] > target) {
right = mid-1;
}else {
left = mid+1;
}
mid = (left+right)/2;
}
return -1;//没找到
}
拷贝的方式:
1.Arrays.copyOf(int[] original,int newLength);
int[] copy = Arrays.copyOf(array,array.length);
System.out.println(Arrays.toString(copy));
2.arraycopy(Object src, int srcPos,Object dest,
int destPos,int length);
int[] copy2 = new int[array.length];
System.arraycopy(array,0,copy2,0,array.length);
System.out.println(Arrays.toString(copy2));
3.实现copyOf
代码如下(示例):
public static int[] copyOf(int[] arr) {
if(arr == null) {
return null;
}
int[] tmp = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
tmp[i] = arr[i];
}
return tmp;
}
深拷贝:改变拷贝后数组中的值不会改变原数组中的值。
JVM内存划分:
https://editor.csdn.net/md/?articleId=124622933