07java基础--数组(Array)

Posted yiwanfan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07java基础--数组(Array)相关的知识,希望对你有一定的参考价值。

java基础--数组(Array)

目录

一.  关于数组

二.  数组的内存结构

三.  数组定义常见问题

 

一些笔记

数组的参数传递:传递的是引用地址,若形参中更改了内存地址里的元素,则引用该内存地址的变量也会进行更改。

 

 


一.  关于数组

数组的概念

  同一种类型数据的集合。(可以是基本数据类型,也可以是引用数据类型)

 

数组的特点

  • 数组存储的都是相同数据类型的元素
  • 数组的长度也就是数组中元素的个数
  • 元素从0开始编号,编号也称“索引”:index(下标,角标)
  • 数组中元素的访问方式是通过数组名+索引的方式,如int [0] 

 

数组的定义格式

技术分享图片

 

初始化方式分为:动态初始化和静态舒适化

  动态初始化:数组的创建和元素的赋值分开进行

1 /*
2 元素类型[ ] 数组名 = new 元素类型[数组长度];
3 */
4     int[ ] arr = new int [3];

  静态初始化:数组创建时就给数组元素赋值

1 /*
2 元素类型[ ] 数组名 = new 元素类型[ ]{元素1,元素2,…};
3 */
4     int[ ] arr = new int[ ]{2,0,3,1};
5     int[ ] arr = {2,0,3,1};    //静态初始化的简化写法

 

 


 

二、数组的内存结构

2.1  关于内存结构

Java程序在运行时,为了提高运行效率,对内存进行了不同区域的划分,每一种区域都有特定的处理数据的方式和内存管理方式,主要有以下几种:

技术分享图片

栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放;

堆内存:存放数组和对象,通过new建立的实例都存放在堆内存中

  每一个实例都有内存地址值;

  实例中的变量都有默认初始化值;

  当实例不再被使用,会在不确定的时间被垃圾回收器回收。

方法区:存放类文件和方法

本地方法栈:供本地方法使用,与操作系统相关

 程序计数器--Program Counter:对字节码文件计数

 

2.2 数组的内存结构

技术分享图片

也就是根据数据的长度和相应的类型,开辟一个内存空间。(如:int[] arr = new int[5] ;就是开辟了int类型的5个位置,可以放置int类型的元素)

使用数组元素的方式是:数组名+索引(如:int [0] )。

 


 

三.  数组的常见问题

数组索引越界异常(ArrayIndexOutOfBoundsException)

1 int[] arr = new int[2];        //创建了可以放2个int类型元素的数组
2 System.out.println(arr[2]);    //索引是从0开始,该语句是打印索引为2的元素
3 //原因:访问到了数组中的不存在的索引发生异常

 空指针异常(NullPointerException)

1 int[] arr = new int[2];
2 arr = null;
3 System.out.println(arr[0]);
4 //原因:arr引用没有指向数组,却在操作数组中的元素

 

数组的遍历

  • 数组遍历:依次访问每个元素,访问的次数就是元素的个数。
  • 访问次数:length属性判断数组的长度,来确定访问的次数。

注:可将打印语句封装成方法,便于多次使用。

 

 

 


 

以上是关于07java基础--数组(Array)的主要内容,如果未能解决你的问题,请参考以下文章

Java基础语法(下)-数组Array

java基础-引用数据类型之数组(Array)

java基础——多维数组和稀疏数组

java中把json怎么转换成数组

java中把json怎么转换成数组?

常用Java程序片段