欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的数组

程序员文章站 2022-07-16 08:21:04
...
容器:将多个数据存储在一起,每个数据称为该容器的元素

数组:数组就是存储多个数据的容器,数组的长度固定,多个数据的数据类型要一致。

数组的3种定义方式


1. 数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
 
 int[] arr = new int[3];
2.数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
    注意:给定了具体的元素就不能给定长度
   
int[] arr = new int[]{1,2,3,4,5};

3.数据类型[] 数组名 = {元素1,元素2,元素3...};
  
 int[] arr = {1,2,3,4,5};

数组的访问:

    直接输出数组名,显示的是数组的地址 [aaa@qq.com

    索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

    通过索引访问数组中的元素:
        数组名[索引],获取出数组中的元素
        数组名[索引] = 数值,为数组中的元素赋值

    数组的长度属性: 
    每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的
长度,语句为: 数组名.length ,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数
组的最大索引值为 数组名.length-1 。
 
  public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5};
        //打印数组的属性,输出结果是5
        System.out.println(arr.length);
    }

数组原理内存:Java虚拟机的内存划分

Java中的数组
JVM的内存划分:

区域名称
作用
寄存器
给CPU使用,和我们开发无关。
本地方法栈
JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区
存储可以运行的class文件。
堆内存
存储对象或者数组,new来创建的,都存储在堆内存。
方法栈
方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

数组常见的错误:
1.空指针异常
  
 public static void main(String[] args) {
        int[] arr = {1,2,3};
        arr = null;
        System.out.println(arr[0]);
    }
    arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。(就是原本存在的数组,被你删掉了,找不到数组了,就空指针异常)

2.数组下标越界
    即是指你引用的数组下标不存在于该数组中
    例如: 
       
int[] i = new int[3];
int j = i[3];//引用了超过数组长度的位置

数组遍历

    即是把数组中所有的数据查看一遍
    经常使用的方法是:
   
//注意i<arr.length; 可以使用 i<=arr.length-1;
for(int i = 0;i<arr.length;i++){
        操作数据数据;
}


获取数组最大值
  
 int max = arr[0];

    for(int i = 0;i<arr.length;i++){
            if(arr[i]>max){
                max = arr[i];
            }
    }

数组反转
   
int temp = 0;
    for ( int start = 0 ,int end = arr.length-1; end<strat; start++,end-- ){
        temp = arr[start];
        arr[start] = arr[end];
        arr[end]  = temp;
    }

数组作为参数和返回值

//数组作为参数,很常见的有main函数
public static void printArray(int[] arr) {
    System.out.println("2位置: " + arr);
    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}

/*
  创建方法,返回值是数组类型
  return返回数组的地址
*/
public static int[] getArray() {
    int[] arr = { 1, 3, 5, 7, 9 };
    //返回数组的地址,返回到调用者
    return arr;
}