java-数组

发布时间:2024年01月11日

?数组:

? ?- 是一种数据类型(引用类型)

? ?- 相同数据类型元素的集合

? ?- 定义:

? ?- 初始化:给数组中的元素做初始化

? ?- 访问:访问的是数组中的元素

? ?- 通过(数组名.length)可以获取数组的长度(元素的个数)

? ?- 通过下标/索引来访问数组中的元素

? ? ? ?下标从0开始,最大到(数组的长度-1)

? ?- 遍历/迭代:从头到尾挨个走一遍

? ?数组的定义

? ? ? ? 数组是一种数据结构,用于存储相同类型的多个元素。它可以存储基本数据类型(如int、float、boolean等)和引用数据类型(如对象)。

? ? ? ?数组的定义包括以下几个部分:

  1. 数据类型:数组可以存储相同类型的元素,其中元素的数据类型可以是基本数据类型或引用数据类型。
  2. 数组名:数组的名称用于标识该数组,在使用数组时需要通过数组名来引用数组。
  3. 数组的大小:数组的大小指定了数组可以存储的元素个数,它是一个非负整数。

? ? ? ? ?以下是定义数组的几种方式:

  1. 静态初始化:通过在定义数组时直接为数组元素赋值来初始化数组。语法如下:
    数据类型[] 数组名 = {元素1, 元素2, ...};
    
    例如:
    int[] numbers = {1, 2, 3, 4, 5};
    

  2. 动态初始化:在定义数组时只指定数组的类型和大小,然后在后续的代码中为数组元素赋值。语法如下:
    数据类型[] 数组名 = new 数据类型[数组大小];
    
    例如:
    int[] numbers = new int[5];
    numbers[0] = 1;
    numbers[1] = 2;
    numbers[2] = 3;
    numbers[3] = 4;
    numbers[4] = 5;
    

? ? ? ? ? 无论是静态初始化还是动态初始化,数组的元素可以通过索引访问和修改,索引从0开始,直到数组的大小减1。例如,通过numbers[0]可以访问数组numbers的第一个元素。


? ? ? ? 复制

? ? ???- System.arraycopy(a,1,b,0,4);
? ?

? ?//数组的复制:
? ? ? ?int[] a = {10,20,30,40,50};
? ? ? ?int[] b = new int[6]; //0,0,0,0,0,0
? ? ? ?//a:源数组
? ? ? ?//1:源数组的起始下标
? ? ? ?//b:目标数组
? ? ? ?//0:目标数组的起始下标
? ? ? ?//4:要复制的元素个数
? ? ? ?System.arraycopy(a,1,b,0,4); //灵活性好
? ? ? ?for(int i=0;i<b.length;i++){
? ? ? ? ? ?System.out.println(b[i]);
? ? ? ?}
? ? 
? ?
? ? //?- int[ ] b = Arrays.copyOf(a,6);
? ?
? ?
? ? ? ?//常规复制
? ? ? ?int[] a = {10,20,30,40,50};
? ? ? ?//a:源数组
? ? ? ?//b:目标数组
? ? ? ?//6:目标数组的长度(元素个数)
? ? ? ?//---若目标数组长度>源数组长度,则末尾补默认值
? ? ? ?//---若目标数组长度<源数组长度,则将末尾的截掉
? ? ? ?int[] b = Arrays.copyOf(a,6); //灵活性差
? ? ? ?for(int i=0;i<b.length;i++){
? ? ? ? ? ?System.out.println(b[i]);
? ? ? ?}


? ? ? ?数组的扩容

? ? ? int[] a = {10,20,30,40,50};

? ? ? ?//数组扩容(创建了一个更大的新的数组,并将源数组数据复制进去了)
? ? ? ?a = Arrays.copyOf(a,a.length+1);
? ? ? ?for(int i=0;i<a.length;i++){
? ? ? ? ? ?System.out.println(a[i]);
? ? ? ?}


? ? ? ? - 综合案例:

 ? ?//求数组元素的最大值,并将最大值放在数组最后一个元素的下一个位置
? ? ? ?public class MaxOfArray {
? ? ? ? ? ?public static void main(String[] args) {
? ? ? ? ? ? ? ?int[] arr = new int[10];
? ? ? ? ? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ? ? ? ? ?arr[i] = (int)(Math.random()*100);
? ? ? ? ? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ? ? ? ? ?}
? ? ? ?
? ? ? ? ? ? ? ?int max = arr[0]; //假设第1个元素为最大值
? ? ? ? ? ? ? ?for(int i=1;i<arr.length;i++){ //遍历剩余元素
? ? ? ? ? ? ? ? ? ?if(arr[i]>max){ //若剩余元素大于max
? ? ? ? ? ? ? ? ? ? ? ?max = arr[i]; //则修改max为较大的
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?System.out.println("最大值为:"+max);
? ? ? ?
? ? ? ? ? ? ? ?arr = Arrays.copyOf(arr,arr.length+1); //扩容
? ? ? ? ? ? ? ?arr[arr.length-1] = max; //将最大值max赋值给arr中的最后一个元素
? ? ? ? ? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}


? ?
? ?排序:

? ? ?- Arrays.sort(arr); //升序排列(从小到大)

 ? ? ?//8)数组的排序:
? ? ? ?int[] arr = new int[10];
? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ?arr[i] = (int)(Math.random()*100);
? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ?}
? ? ? ?
? ? ? ?Arrays.sort(arr); //对arr进行升序排列
? ? ? ?
? ? ? ?System.out.println("数组排序后的数据:");
? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ?}
? ? ? ?
? ? ? ?System.out.println("倒序输出:");
? ? ? ?for(int i=arr.length-1;i>=0;i--){
? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ?}

总结:??

? ? ?数组是一种用来存储相同类型元素的集合,它是一种引用类型。数组在内存中是连续分配的,可以通过索引值访问数组中的元素。

  1. 声明和初始化数组 可以通过以下方式声明和初始化数组:
int[] array1; // 声明一个整型数组
array1 = new int[5]; // 初始化数组,指定长度为5

int[] array2 = {1, 2, 3, 4, 5}; // 声明并初始化数组,指定具体值

int[] array3 = new int[]{6, 7, 8, 9, 10}; // 声明并初始化数组,指定具体值,可以省略数组长度

  1. 访问数组元素 可以使用索引值访问数组中的元素,索引值从0开始,到数组长度减1结束:
int firstElement = array2[0]; // 访问第一个元素,值为1
int lastElement = array3[array3.length - 1]; // 访问最后一个元素,值为10

  1. 数组长度 使用length属性获取数组的长度:
int length = array1.length; // 数组长度为5

  1. 遍历数组 可以使用循环结构遍历数组中的所有元素:
for (int i = 0; i < array2.length; i++) {
    System.out.println(array2[i]);
}

for (int element : array3) {
    System.out.println(element);
}

  1. 多维数组 Java中也支持多维数组,可以理解为数组的数组:
int[][] twoDimensionalArray = {{1, 2, 3}, {4, 5, 6}}; // 声明并初始化二维数组
int element = twoDimensionalArray[0][1]; // 访问二维数组中的元素,值为2

  1. 数组拷贝 Java提供了System.arraycopy()方法和Arrays.copyOf()方法,用于对数组进行拷贝:
int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray1 = new int[5];
System.arraycopy(sourceArray, 0, targetArray1, 0, sourceArray.length);

int[] targetArray2 = Arrays.copyOf(sourceArray, 5);

文章来源:https://blog.csdn.net/Flying_Fish_roe/article/details/135489367
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。