Java--数组

对于所有的编程语言来说数组都是相对比较重要的数据结构之一。在Java中数组主要用来存放一组固定大小的相同类型的数据。

数组容器在存储数据的时候,需要结合数据类型考虑。

例如:int类型的数组容器(boolean 、byte、short、double)

定义数组格式:

1、数据类型【】 变量名

例:int[ ] array

2、数据类型 变量名【】

例:int array[ ]

初始化

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。

格式:数据类型【】变量名=new 数据类型【数组长度】;

例:int[ ] arr =new int [3];

说明:通过new关键字创建了一个int类型的数组容器,该容器可以存储3个int类型的整数,该容器被arr数组变量所记录。

注意:打印数组变量名的时候,会打印出数组的内存地址。

内存地址:

例:[I@1b6d3586

@:分隔符

[:当前的空间是一个数组类型

I:当前数组容器中所存储的数据类型

1b6d3586:十六进制内存地址

数组元素访问

数组内存地址的访问方式

格式:数组名

数组内部保存的数据的访问方式

格式:数组名【索引】

索引是数组容器中空间的编号

特征

索引从0开始

索引是连续的

索引 一增加,每次加1

索引:数组中数据的编号方式,编号从0开始

作用:访问数组容器中的空间位置

注意:数组在创建完后,即使没有赋值,也可以取出,但取出的元素都是默认初始值。

各数据类型的默认初始值:

数据类型

默认值

整数

0

浮点数

0.0

布尔

false

字符

空字符

引用数据类型

null

引用数据类型:引用、记录了地址值的变量,所对应的数据类型,就是引用数据类型

例:int [ ]=new int[ 3];

内存分配

栈内存:方法运行时,进入的内存,局部变量都存放于这块内存当中

堆内存:new出来的内容都会进入堆内存,并且会存在地址值。

方法区:字节码文件(.class文件)加载时进入的内存

本地方法栈:调用操作系统相关资源

寄存器:交给CPU去使用

多个数组的内存

每new一次,在堆内存中,都是一块新的空间,堆内存中的空间地址不会出现重复的现象。

数组静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

完整格式:数据类型【】 数组名=new 数据类型【】 {数据1、数据2、……};

简化格式:数据类型【】 数组名={数据1数据2、……};

使用场景

动态初始化:只明确元素个数,不明确具体数值,推荐使用动态初始化。

例:使用数组容器来存储5个整数。

     int[] arr=new int[5];

静态初始化:需求中已经明确了要操作的具体数据,直接静态初始化即可

例:在数组中 存入66,77,88

               int[] arr={66,77,88};

数组操作的两个常见小问题

索引越界:访问了数组中不存在的索引,造成索引越界问题

空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常。

数组的遍历

使用for循环遍历

数组遍历:将数组中所有的数据取出来。

例:int[] arr= {11,22,33,44,55};



for(int i=0;i<arr.length;i++){

    arr[i];

}

动态获取数组元素个数:数组名 . Length

注:遍历指的是取出数据的过程,不要局限的理解为遍历就是打印!

获取最小值:

步骤:

  1. 假设数组中的第一个元素为最小值
  2. 遍历数组,获取每个元素,准备进行比较
  3. 如果比较的过程中,出现了比min更小的,让min记录更小的值
  4. 循环结束后,打印最小值。
  5. public static void main(String[] args) {
       
    int[] arr={56,52,58,64};
       
    //1、   假设数组中的第一个元素为最大值
       
    int min=arr[0];
       
    //2、   遍历数组,获取每个元素,准备进行比较
       
    for(int i=1;i<arr.length;i++){
           
    //if(arr[i]最小值
           
    if (arr[i]             min=arr[i];
            }
        }
       
    System.out.println("min:"+min);
        }

while循环遍历

例:int[] intArr3=new int[]{41,52,56,58,60};
int index=0;

while (index<intArr3.length){

    System.out.print(intArr3[index]+"\t");

    index++;//一定要用,不然会出现死循环

}

加强for循环遍历(只能取值,不能赋值)

例:int[] intArr3=new int[]{41,52,56,58,60};
for(int j:intArr3){

    System.out.print(j+"\t");

}

你可能感兴趣的:(java)