博客园 首页 私信博主 显示目录 隐藏目录 管理

Java数组

Java数组

Java数组概述
  • 数组是相同类型数据的有序集合
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  • 数组中,每一个数据称之为一个数组元素,每个数组元素可以通过一个数组下标来访问
数组特点
  • 数组的长度是确定的,数组一旦被创建,它的大小是不可以改变的

  • 数组中的元素类型必须相同,不允许出现混合类型

  • 数组中元素的类型可以是任何类型,包括基本数据类型和引用数据类型

  • 数组变量属于引用类型,数组也可以看成对象,数组中每个元素相当与该对象的成员变量。

    数组本身就是对象,Java对象都是存储在堆中的,因此数组无论保存什么数据都是存储在堆中,数组对象本身就是在堆中

创建数组
//动态初始化
int[] array1; //声明一个数组array1
array1 = new int[10];//给数组分配空间
array1[0] = 1;
array1[1] = 2;
array1[2] = 3;
array1[3] = 4;
array1[4] = 5;//给数组中元素赋值
//静态初始化
int array2[];//声明一个数组array2
array2 = new int[]{1,2,3,4,5,6,7,8,9,0};//给数组分配空间并赋予初值
//数组的长度是固定的,创建数组时必须指定长度
//动态初始化时包含静态初始化的,每个数组元素动态初始化时都有默认值
数组的相关方法

获取数组的长度

int[] nums = new int[5];
int length = nums.length;//获取数组的长度
数组声明内存情况


扩展:Arrays类

java.util.Arrays类能方便的操作数组,它所有的方法都是静态的。

  • fill方法 :给数组中的某段元素附上相同值。

  • sort方法:对数组中某段元素排序。

  • equals方法:比较两个数组,判断的是数组中元素值是否相等。

  • binarySearch方法:对排过序的数组进行二分法查找。

 public class UsingArrays {
    /**
     * 整形数组的输出
     */
    public static void output(int[] array){
        if(array != null){
            for(int i = 0 ; i < array.length; i++){
                System.out.println(array[i] + " ");
            }
        }
    System.out.println();
}
public static void main(String[] args){
    //填充数组,将array[]中所有元素的值初始为0
    int[] array0 = new int[5];
    Arrays.fill(array0,5);
    System.out.println("调用Arrays.fill(array0,5)后:");
    UsingArrays.output(array0);
    //将array0中的第2个到第三个元素的值赋为8
    Arrays.fill(array0, 2, 4, 8);
    System.out.println("调用Arrays.fill(array0,0,2,4,8)后:");
    UsingArrays.output(array0);
 
//对数组进行排序
    int[] array1 = new int[] { 7, 8, 3, 12, 6, 3, 5, 4};
//对数组的第二个到第6个元素进行排序
    Arrays.sort(array1, 2, 7);
    System.out.println("调用Arrays.sort(array1, 2, 7)后:");
    UsingArrays.output(array1);
    //对整个数组进行排序
    Arrays.sort(array1);
    System.out.println("调用Arrays.sort(array)后:");
    UsingArrays.output(array1);
    
    //比较数组元素是否相等
    System.out.println(Arrays.equals(array0,array1));
    int[] array2 = (int[]) array1.clone();
    System.out.println("array1和array2是否相等?" 
    + Arrays.equals(array1,array2));
    
    //使用二分法在数组中查找指定元素所在的下标
    //数组必须是先排好序的
    Arrays.sort(array1);
    System.out.println("元素3在array1中的位置:" 
    + Arrays.binarySearch(array1,3));
    //如果不存在,就返回负数
    System.out.println("元素9在array1中的位置:" 
    + Arrays.binarySearch(array1,9));
    }
}

输出:

调用Arrays.fill(array0,5)后:5 5 5 5 5

调用Arrays.fill(array0,0,2,4,8)后: 5 5 8 8 5

调用Arrays.sort(array1, 2, 7)后: 7 8 3 3 5 6 12 4

调用Arrays.sort(array)后: 3 3 4 5 6 7 8 12

false

array1和array2是否相等?true

元素3在array1中的位置:1

元素9在array1中的位置:-8
posted @ 2021-05-06 12:32  莫逆追风  阅读(36)  评论(0)    收藏  举报