day06-数组

day06-数组

1.数组

概念:

指的是一种容器,可以同来存储同种数据类型的多个值。

但是数组容器在存储数据的时候,需要结合隐式转换考虑

Review:数据类型大小

ps:避免麻烦,建议容器的存储的数据类型保持一致。

举例:

整数1 2 3 4 5 6 可以使用int类型的数组来存储。

小数1.1 1.2 1.3 1.4 就可以使用double类型的数组来存储。

字符串"aaa" "bbb" "ccc" 就可以使用String类型的数组来存储。

2.数组的定义

格式一:(常用)

数据类型 [] 数组名

比如:int [] array

格式二:

数据类型 数组名 []

比如: int array []

注意点:

1.数组名只是一个名字,任意都可以

2.方法括号跟数组名,谁写在前面,谁写在后面都是一样的

3.数组的静态初始化

完整格式:

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4...};

简化格式:

数据类型[] 数组名 = {元素1,元素2,元素3,元素4...};     ( 不需要new 数据类型[] 

注意点:

  • 等号前后的数据类型必须保持一致。

  • 数组一旦创建之后,长度不能发生变化,比如下面例子,创建为3个长度,数组长度确定为3不可更改

练习1:

4.地址值

数组本质是在内存中开辟了一段给定长度的空间,表示数组在内存中的位置。

直接打印数组的时候,实际出现的是数组的地址值。

如果是int数据类型,地址开头则是I。

5.数组元素访问

格式:

数组名[索引];

作用:

  • 获取数组中对应索引上的值

  • 修改数组中对应索引上的值,一旦修改之后,原来的值就会被覆盖了

获取索引示例:

修改索引数值示例:

6.数组的遍历

遍历:就是把数组里面所有的内容一个一个全部取出来。

建议:一个循环只做一件事

数组的长度:数组名.length;

IDEA快速生成:

数组名.fori

练习2:统计个数

需求:定义一个数组,存储1,2,3,4,5,6,7,8,9,10

遍历数组得到每一个元素,统计数组里面一共有多少个能被3整除的数字

7.数组的动态初始化

格式:

数据类型[] 数组名 = new 数据类型[数组的长度];

对比静态,动态是创建时自定义数组长度,由虚拟机给出默认初始化值。

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4...};

在打印索引位没数值的时候,会输出默认初始值

字符类型默认初始值表现形式就是个空格。

8.数组两种初始化方式的区别

9.数组常见问题

当访问了数组中不存在的索引,就会引发索引越界异常

避免:

针对于任意一个数组,确定索引的范围: 最小索引:0 最大索引:数组的长度 - 1

即(数组名.length - 1)

10.练习3:统计个数

需求:生成10个1~100之间的随机数存入数组。

1)求出所有数据的和

2)求所有数据的平均数

3)统计有多少个数据比平均值小

//分析:
//1.定义数组
int[] arr = new int[10];
//2.把随机数存入到数组当中
Random r = new Random();

for (int i = 0; i < arr.length; i++) {
    //每循环一次,就会生成一个新的随机数
    int number = r.nextInt(100) + 1;
    //把生成的随机数添加的数组当中
    //数组名[索引] = 数据;
    arr[i] = number;
}


// 1)求出所有数据的和
//定义求和变量
int sum = 0;
for (int i = 0; i < arr.length; i++) {
    //循环得到每一个元素
    //并把元素累加到sum当中
    sum = sum + arr[i];
}
System.out.println("数组中所有数据的和为:" + sum);


//2)求所有数据的平均数
int avg = sum / arr.length;
System.out.println("数组中平均数为:" + avg);



//3)统计有多少个数据比平均值小
int count = 0;
for (int i = 0; i < arr.length; i++) {
    if(arr[i] < avg){
        count++;
    }
}

//当循环结束之后,就表示我已经找到了所有的比平均数小的数据
System.out.println("在数组中,一共有" + count + "个数据,比平均数小");



//遍历数组,验证答案
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

11.练习4:交换数据

需求:定义一个数组,存入1,2,3,4,5。按照要求交换索引对应的元素。

交换前:1,2,3,4,5

交换后:5,2,3,4,1

//1.定义数组存储数据
int[] arr = {1,2,3,4,5};
//2.利用循环去交换数据
for(int i = 0,j = arr.length - 1; i < j; i++,j--){
    //交换变量i和变量j指向的元素
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}
//当循环结束之后,那么数组中的数据就实现了头尾交换
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

12.练习5:打乱数据

需求:定义一个数组,存入1~5。要求打乱数组中所有数据的顺序。

//1.定义数组存储1~5
int[] arr = {1, 2, 3, 4, 5};
//2.循环遍历数组,从0索引开始打乱数据的顺序
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
    //生成一个随机索引
    int randomIndex = r.nextInt(arr.length);
    //拿着随机索引指向的元素 跟 i 指向的元素进行交换
    int temp = arr[i];
    arr[i] = arr[randomIndex];
    arr[randomIndex] = temp;
}
//当循环结束之后,那么数组中所有的数据已经打乱顺序了
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值