赞
踩
1.数组介绍
2.数组的定义与静态初始化
3.数组元素访问
4.数组遍历
5.数组动态初始化
6.数组内存图
7.数组常见问题
8.数组常见操作
数组: 是一种容器,可以用来存储同种数据类型的多个值。
> 例如: int类型的数组容器 ( byte short int )
double类型的数组容器( byte short int long float double)
建议: 数组容器在存储数据的时候,需要结合隐式转换考虑。
容器的类型,和存储的数据类型保持一致。
数组本身是引用类型,但数组中的数据元素可以是任何数据类型,包括基本数据类型和引用数据类型。
数组创建时需要指定一个名称,并会在内存中开辟一整块连续的内存空间,数组名引用的就是这块连续空间的首地址(第一个地址)。
数组创建后,长度一旦确定,就不能再被修改。
按照维度:一维数组、二维数组、多维数组。
按照数据类型:基本类型元素的数组、引用类型元素的数组(即对象数组)。
默认值:数组本身是引用类型,它的元素相当于是类的成员变量,因此数组一经分配内存空间,其中的每个元素也会按照成员变量的方式被进行隐式初始化。这些不同类型的数据元素有着自己对应的默认值。
整型数组默认值:0;
浮点型数组默认值:0.0;
布尔类型数组默认值:false;
字符型数组默认值:0 或者' '或者'\u0000';
引用类型数组默认值:null。
注意:其中null是一种特殊的值,表示当前对象在内存中没有指向任何的地址。而""表示一个空字符串,在内存中是有对应的内存地址的。
格式一:
数据类型 []数组名
范例: int [ ]array
格式二:
数据类型 数组名[]
范例: int array [ ]
初始化: 就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。
简化格式:
数据类型[ ] 数组名 ={元素1,元素2,元素3...};
范例: int[ ] array ={11,22,33};
范例: double[ ] array ={ 11.1, 22.2,33.3};
数组长度:每个数组都有一个length属性,代表它的长度(元素个数)。
例如: arr.length指明数组arr的长度。
数组一旦初始化,其长度就是不可变的。
数组的地址值:
> 例如: int[ ] arr = {1,2,3,4,5};
System.out.println(arr); // [I@6de3e736(地址值)
double[ ] arr2 = {1.1,2.2,3.3};
System.out.println(arr2);
// [D@568db2f2(地址值)
我们在定义并用new运算符创建数组之后,才可以引用数组中的每个元素。
引用数据元素的方式是:
数组名 [数组元素下标]
数组元素的下标可以是整型常量或整型表达式,如a[3]、b[i]、c[6*i]。
索引: 也叫做下标,角标。
索引的特点: 从0开始,逐个+1增长,连续不间断。
另外数组元素的下标从0开始,所以一个长度为n的数组,其合法的下标取值范围是 0 —>n-1。
如:int a[]=new int[3]; 可引用的数组元素是a[0]、a[1]、a[2]。
数组遍历: 将数组中所有的内容取出来,取出来之后可以(打印,求和,判断..)。
注意: 遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印!
动态初始化: 初始化时只指定数组长度,由系统为数组分配初始值。
格式: 数据类型[ ]数组名 = new 数据类型[数组长度];
范例: int[ ] arr = new int[3];
动态初始化: 手动指定数组长度,由系统给出默认初始化值,只明确元素个数,不明确具体数值, 推荐使用动态初始化。
举例: 使用数组容器来存储键盘录入的5个整数。
int[ ] arr ={? ? ? ? ?};
int[ ]arr = new int[5];
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。需求中已经明确了要操作的具体数据,直接静态初始化即可.
举例: 将全班的学生成绩存入数组中 11,22,33。
int[ ] arr ={11, 22, 33};
Java内存分配:1.栈 2.方法区 3.本地方法栈 4.寄存器
注意:从JDK8开始,取消方法区,新增元空间把原来方法区的多种功能进行拆分,有的功能放到了 堆中,有的功能放到了元空间中。
1.栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
2.堆:存储对象或者数组,new来创建的,都存储在堆内存。
3.方法区:存储可以运行的class文件。
4.本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关。
5.寄存器: 给CPU使用,和我们开发无关。
注意:当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改之后的结果了。
当访问了数组中不存在的索引,就会引发索引越界异常。
Java支持的数组:
1.基本类型数组:包括 boolean、byte、short、char、int、long、float 和 double 类型的数组。
2.引用类型数组:包括任何类、接口、数组类型的对象的数组。
Java不支持的数组:
1.C/C++ 中的指针数组,因为 Java 中没有指针。
2.多维变长数组,例如 C/C++ 中的动态二维数组。在 Java 中,多维数组的每个维度的大小必须在定义时确定,且在程序运行时无法改变。
3.超过 JVM 堆空间大小限制的大型数组。Java 数组的最大大小受 JVM 堆空间大小的限制。如果尝试创建一个超过 JVM 堆空间大小限制的数组,则会引发 OutOfMemoryError 异常。
4.Java不支持泛型数组
1.求最值 2.求和 3.交换数据 4.打乱数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。