java基础知识之数组

【注意1】数组大小在初始化的时候需要确定,且不能修改。
【注意2】数组既可以存储基本数据类型,也可以存储引用数据类型。

数组不是基本数据类型,而是引用数据类型,引用数据类型就需要在对上开辟存储空间后,才能通过引用变量来获取。
创建数组实际会创建两个存储空间:
1、数组名称,也就是数组的引用变量,该变量存储在栈上。
2、数组本身,也就是数组元素所占的存储空间,该空间在堆上。
初始化一个数组包含两步:
1、声明数组:定义引用变量并存在栈上。
2、数组初始化:在堆上开辟空间存储数组元素。

一、数组定义及初始化

数组初始化方式分为静态初始化和动态初始化
1、静态初始化:指定数组中每个元素的值
简单写法:int[] numbers = {1,7,2,0,9};
完整写法:int[] numbers = new int[]{1,7,2,0,9}

2、动态初始化:只确定数组的大小,由系统来指定数组中每个元素的默认值
每个元素的默认值会根据数组类型赋默认值:
在这里插入图片描述
int[] numbers =new int[5];(因为每个元素有默认值,此时已经在堆上分配了存储空间,可以通过foreach方法打印每个值)。
Integer num = new Integer[5];(引用数据类型的默认值为null,还没有初始化,也就没在堆上分配存储空间,用foreach打印每个值会报错)在这里插入图片描述
打印结果如下:在这里插入图片描述

3、也可以先声明数组,然后再初始化,例如
在这里插入图片描述
打印结果为7个0。

二、引用传递

在这里插入图片描述
输出结果如下:可以看出通过num引用修改第一个元素,newNum第一个元素也变了,两个数组引用实际指向的是同一个值。在这里插入图片描述
关于java的内存分配将单独写一篇

三、数组属性和常用方法

数组大小在初始化时已经确定,且不能被修改。如果需要定义可变长的一组数可以用集合(map,set,list等),会有一篇单独将数组及集合的区别与联系。
int[] num = new int[5];
1、length 属性: num.length,获取数组长度,下标从0到length-1。
2、数组遍历:
2.1)for循
在这里插入图片描述
输出结果如下:
在这里插入图片描述

四、可变参数列表

适用场景:参数类型已知,参数个数不确定,编译器将可变参数当作数组处理
写法:参数类型… 参数列表名称,如下:
int… args
String… args
在这里插入图片描述java把可变参数args当作数组处理,可以通过foreach遍历

1、可变长度
在这里插入图片描述
在这里插入图片描述
打印结果如下:
在这里插入图片描述
可以看出可变参数个数可以为0和多个

2、 注意事项
1、因参数个数不定,可变参数列表需要放到最后一个参数,否则如果之后有个同类型的参数,程序不知道是可变参数列表的还是独立参数
2、只能有一个可变参数

参考文档:

https://blog.csdn.net/lemon_fight/article/details/83033513

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值