Java-数组
2024-01-01 11:10:48
power by 黑马程序员
数组:数组指的是一种容器,可以用来存储同种数据类型的多个值。
1、数组的定义
2、数组的初始化
就是在内存中,为数组容器开辟空间,并将数据存入容器的过程。
- 静态初始化
//需求1:定义数组存储5个学生的年龄
int[] age = new int[]{11,28,17,37,44};
int[] age1 = {11,28,17,37,44};
//需求2:定义数组存储3个学生的姓名
String[] name = new String[]{"zahnsan","lisi","wangwu"};
String[] name1 = {"zahnsan","lisi","wangwu"};
//需求3:定义数组存储4个学生的身高
double[] height = new double[]{1.75,1.76,1.78,1.96};
double[] height1 = {1.75,1.76,1.78,1.96};
- 动态初始化
初始化时只指定数组长度,由系统为数组分配初始值。
格式: 数据类型[] 数组名 = new 数据类型[数组长度];
范例: int[] arr = new int[3];
数组默认初始化值的规律:
整数类型:默认初始化值 0
小数类型:默认初始化值 0.0
字符类型:默认初始化值 '/u0000' 空格
布尔类型:默认初始化值 false
引用数据类型:默认初始化值 null
- 静态初始化和动态初始化的区别
3、数组的地址值
数组的地址值就表示数组在内存中的位置。
[D@5594a1b5
“[”:表示的就是一个数组
“D”:表示当前数组内的元素都是double类型。
“@”:表示一个间隔符号。(固定的格式)
“5594a1b5”:才是数组真正的地址值。(十六进制)
“[D@5594a1b5”:平时习惯性的会把这个整体叫做数组的地址值。
4、数组元素访问
数组名[索引];
索引:也叫做下标、角标。
索引的特点:从0开始,逐个+1增长,连续不间断。
int[] arr = {1,2,3,4,5};
//1、获取数组中的第一个元素
int temp = arr[0];
//2、把数据存储到数组中
arr[2] = 6;
//细节:一旦覆盖之后,原来的数据就不存在了。
5、数组遍历
数组遍历:将数组中所有的内容取出来,取出来之后可以(打印、求和、判断…)。
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印。
int[] arr = {1,2,3,4,5};
//开始条件:0
//结束条件:数组长度 - 1(最大索引)
//在Java中,关于数组的一个长度属性:length
//调用方式:数组名.length
//扩展:
//自动快速的生成数组的遍历方式
//idea提供的:数组名.fori
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
6、数组常见问题
当访问了数组中不存在的索引,就会引发索引越界异常
//定义一个数组
int[] arr = {1,2,3,4,5};
System.out.println(arr[10]);
//这个时候会报:ArrayIndexOutOfBoundsException异常
//原因:访问了不存在的索引
//避免:要知道索引的范围
7、其他知识点
Random r = new Random()
int number = r.nextInt(100)+1;
//其中 nextInt(100) 是随机生成 0~99 之间(包括0、99)的随机数。
//r.nextInt(100)+1 就是随机生成 1~100之间(包括1、100)的随机数。
8、练习题
//定义一个数组,存入1~5。要求打乱数组中所有数据的顺序
//定义一个数组
int[] arr = {1,2,3,4,5};
//创建随机对象
Random r = new Random();
//遍历数据
for (int i = 0; i < arr.length; i++) {
//生成随机索引
int random = r.nextInt(arr.length);
//交换数组中的数据
int temp = arr[random];
arr[random] = arr[i];
arr[i] = temp;
}
//再次遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
9、数组的内存图
(1)数组内存图
总结:
(2)两个数组指向同一个空间的内存图
总结:
文章来源:https://blog.csdn.net/qq_48269763/article/details/135322542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!