Java中数组的使用

数组(array)是一种用于存储多个相同类型数据的存储模型

1、数组的定义格式

格式一:数据类型 [ ]   变量名
范例:              int[ ]   arr
定义了一个int类型的数组,数组名是arr
格式二:数据类型       变量名[ ]
范例:            int   arr[ ] 
定义了一个int类型的变量,变量名是arr数组

 

 2、数组的初始化

2.1 动态初始化

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

格式:数据类型 [ ] 变量名 =  new  数据类型[数组长度]; 
范例:         int [ ]     arr   =  new   int[3];

使用动态初始化时,系统会根据数据类型为数组分配初始值  

整数(byte、short、int、long):0

浮点数(float、double):           0.0

布尔(boolean):                       false

字符(char):                             空字符

引用数据类型(String):             null

2.2 静态初始化

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

格式:数据类型 [ ] 变量名 =  new  数据类型[ ] { 数据1 , 数据2 , 数据3 , ……} ;

    范例:         int [ ]  arr =  new   int[ ] { 1 , 2 , 3 } ;

简化格式:数据类型 [ ] 变量名 = { 数据1 , 数据2 , 数据3 , ……} ;
范例:                int [ ]  arr = { 1 , 2 , 3 } ; 

注:无论是静态初始化还是动态初始化,数组在初始化结束的时候数组的长度就已经确定了 

 3、数组的索引

索引是数组中数据的编号方式,作用是用于访问数组的数据使用,数组名 [索引]等同于变量名,是一个特殊的变量名。

数组内部保存的数据的访问方式
格式:数组名[索引]

 索引的特征:

索引从 0 开始
索引是连续的
索引逐一增加,每次加 1

4、数组的内存分配 

Java 程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

4.1 栈内存和堆内存的区别

其中栈内存用来存储局部变量,会在数据使用完毕后就消失

堆内存用来存储new出来的东西,每一个new出来的东西都有地址,通过地址使用堆内存的数据

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

 int [] arr 存在于堆内存, new int [ 3] 存在于栈内存。 在堆内存中每一个 new 出来的对象都有一个唯一的地址值

4.2 内存分配

堆内存在每一个new出来的东西都会有一个地址

例1:

String[] strs = new String[5];
strs[2] = “Tom”;
strs = new String[3];

String[] strs = new String[5];

strs[2] = “Tom”;

 

strs = new String[3];

这个时候输出的字符串数组将是{null,null,null}

例2:

int[] arr1 = new int[3];
int[] arr2 = arr1;
arr1[0]=1;
System.out.println(arr2[0]);

 在此代码中是把arr1的地址赋值给了arr2,两个数组同时指向同一个堆内存的地址,所以当arr1[0]的值改变时,arr2[0]的值也会改变,所以输出结果为1。

5、常见问题

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

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

6、数组的遍历

通过循环语句进行遍历数组

数组有length属性,可以获取数组的长度。

例:通过for循环遍历数组,对数组进行赋值

Scanner scanner = new Scanner(System.in);
        int[] arr = new int[3];
        for (int i=0;i<arr.length;i++){
            arr[i] = scanner.nextInt();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值