Java 数组、排序和查找(2)

简介: 数组的基本知识

前言

数组基本概念复习

一、数组拷贝

案例演示:

将 int[] arr1 = {10,20,30}; 拷贝到 arr2 数组, 要求数据空间是独立的。

publicclassArrayCopy {
publicstaticvoidmain(String[] args) {
int[] arr1= {10, 20, 30};
// 创建一个新的数组 arr2 , 开辟新的数据空间// 大小 和arr1 一样大int[] arr2=newint[arr1.length];
//遍历 arr1 ,把每个元素拷贝到对应的位置for(inti=0; i<arr1.length; i++) {
arr2[i] =arr1[i];
         }
arr2[0] =100; // 修改 arr2 不会对 arr1 造成影响System.out.print("arr1数组的值为:");
for(inti=0; i<arr1.length; i++) { 
System.out.print(arr1[i] +" ");
        }
System.out.println( );
System.out.print("arr2数组的值为:");
for(inti=0; i<arr1.length; i++) { 
System.out.print(arr2[i] +" ");
        }
    }
}

可以看出 arr2 的改变没有影响到 arr1,这就是数组的拷贝,会开创独立的数据空间,不会互相影响。

二、数组反转

案例演示:

(1)方法一

把数组的元素内容反转。如 arr = {11,22,33,44,55,66} 反转为 arr = {66, 55,44,33,22,11}

publicclassArrayReverse {
publicstaticvoidmain(String[] args) {
int[] arr= {11, 22, 33, 44, 55, 66};
for( inti=0; i<arr.length/2; i++) { 
inttemp=arr[arr.length-1-i];
arr[arr.length-1-i] =arr[i];
arr[i] =temp;
        }
for( inti=0; i<arr.length ; i++) {
System.out.print(arr[i] +" ");
        }
    }
}

分析:

1)把 arr[0] 和 arr[5] 进行交换 {66, 22, 33, 44, 55, 11}

2)把 arr[1] 和 arr[4] 进行交换 {66, 55, 33, 44, 22, 11}

3)把 arr[2] 和 arr[3] 进行交换 {66, 55, 44, 33, 22, 11}

4)一共要交换三次,所以总共循环次数应为 arr.length / 2 次

5)每次交换时,对应的下标 是 arr[i] 和 arr[arr.length - 1 - i]

(2)方法二

publicclassArrayReverse02 {
publicstaticvoidmain(String[] args) {
int[] arr= {11, 22, 33, 44, 55, 66};
int[] arr2=newint[arr.length];
for( inti=arr.length-1 , j=0; i>=0 ; i-- , j++) {
arr2[j] =arr[i];
        }
arr=arr2;
//当 arr 指向 arr2 数据空间,此时 arr 原来的数据空间就没有for( inti=0 ; i<arr.length ; i++) {
System.out.print(arr[i] +" ");
        }
    }
}

分析:

1)先创建一个新的数组 arr2, 大小为 arr.length

2)逆序遍历 arr,将每个元素拷贝到 arr2的元素中

3) arr 指向 arr2 数据空间,此时 arr 原来的数据空间就没有了,会被当做垃圾销毁

相关文章
|
3天前
|
存储 算法 搜索推荐
Java语言中的数组技术详解
Java语言中的数组技术详解
|
3天前
|
存储 算法 Java
Java数组与集合的深入解析
Java数组与集合的深入解析
11 0
|
4天前
|
存储 Java 索引
Java的数组定义与引用
Java的数组定义与引用
|
5天前
|
搜索推荐 算法 Java
Java数组概述及其应用
Java数组概述及其应用
10 0
|
5天前
|
存储 Java 索引
Java中的数组复制技术详解
Java中的数组复制技术详解
11 0
|
5天前
|
存储 算法 搜索推荐
Java中数组元素的查找技术详解
Java中数组元素的查找技术详解
12 0
|
5天前
|
存储 Java API
Java数组元素的填充与替换技术详解
Java数组元素的填充与替换技术详解
13 1
|
5天前
|
存储 Java 数据处理
Java一维数组的创建与应用
Java一维数组的创建与应用
11 0
|
5天前
|
存储 Java 编译器
Java一维数组的初始化技术详解
Java一维数组的初始化技术详解
13 0
|
5天前
|
存储 Java 索引
Java一维数组元素的引用与操作技术详解
Java一维数组元素的引用与操作技术详解
13 1