所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型,这里面实际上又会牵扯到内存分配,而数组的定义语法有如下两类
数组动态初始化:
|- 声明并开辟数组: 数据类型 []数组名称=new 数据类型[长度];
数据类型 数组名称[]=new 数据类型[长度];
|- 分布进行数组空间开辟(实例化):
声明数组: 数据类型 数组名称[]=null;
数据类型 [] 数组名称=nul;
开辟数组空间: 数组名称 =new 数组类型[长度];
.length是数组动态取得数组长度的方法: 数组名.lenngth
★但是千万要记住,数组属于引用数据类型,所以在数组使用之前一定要开辟空间(实例化),如果使用了没有开辟空间的数组一定回出现nullpointerExcption异常信息
这一原则和之前的对象操作是完全相同的。
接下来给个例子
我要说的是第10行引用传递,如果要发生引用传递,不要出现【】
date是一个堆内存地址
而第六行是定义一个空数组 所以在栈中不指向
而第10行中 把date所指向的堆内存地址给了temp所以temp也和date一同指向同一个堆内存
数组的静态初始化
数组的定义都有一个明显特点:数组首先先开辟内存空间,而后再使用索引(下标index)进行内存设置,实际上都叫做动态初始化,而如果希望数组再定义的时候可以同时设置内容,那么就可以采用静态初始化完成。
数组的静态初始化的语法一共分为以下两种类型:
简化格式:数据类型 数组名称[]={值,值,.....};
完整格式:数据类型 数组名称[]=new 数据类型 [] {值,值,.....};
强烈建议使用完整语法格式,这样 可以轻松的使用匿名数组这一概念。
范例:匿名数组的使用
数组最大的缺陷:长度固定。不方便操作。所以应该用一些数据结构实现一个动态长度的数组。
二维数组(了解)数组名称【行索引】【列索引】
那么对于二维数组的定义有两种声明形式:
数组的动态初始化:数据类型 对象数组[][]=new 数据类型【行个数】【列个数】;
数组的静态初始化:数据类型 对象数组[][]=new 数据类型【】【】{ {值,值,值..},{值,值} {值,值} } ;
范例:定义一个二维数组
数组与方法调用(重点)
数组是一个引用数据类型,那么我们知道所 有的引用数据类型都可以为其设置多个栈内存指向。
所以在进行数组操作的时候也可以将其通过方法进行处理。
范例:方法接收数组
在方法的参数上由于需要接收一个整形数组,所以就实现了一个最为基础的引用传递操作。
范例:方法返回数组
那么数组上发生了引用传递,那么也就意味着方法接收数组之后也可以对数组进行修改
范例:定义一个方法该方法可以实现数组内容的乘2