一、数组概述
1、数组的解释:可以存储同种数据类型的多个值的一种容器
2、注意:
(1)存储数据时,需要结合隐式转换:
(2)建议:容器的类型,和存储的数据类型保持一致
二、数组的定义
1、格式:
2、数组的静态初始化
3、数组的动态初始化
4、数组的静态初始化和数组的静态初始化的区别:
示例代码:
package com.camellia.demo1.ArrayDemo;
public class ArrayDemo4 {
public static void main (String args[]) {
/*定义一个数组,用来存储班级中50个学生的姓名
*姓名未知,等学生报道之后,再进行添加。
*/
//格式:
//数据类型[] 数组名 = new 数据类型 [数组长度];
//创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值
String[] arr1 = new String[50];
//添加学生
arr1[0] = "张三";
arr1[1] = "李四";
//获取
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
//数组,默认初始化值的规律
//整数类型 :0
//小数类型 :0.0
//字符类型 :/u0000
//布尔类型 :false
//引用数据类型 :null
int[] arr2 = new int[3];
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
}
}
运算结果:
5、数组的地址值 :表示数值在内存中的位置
代码:
package com.camellia.demo1.ArrayDemo;
public class ArrayDemo1 {
public static void main(String[] args) {
//格式
//静态初始化
//完整格式
//数据类型 [] 数组名 = new 数据类型[]{元素1,元素2,元素3...}
//简化格式:
//数据类型 数组名 [] = {元素1,元素2,元素3...}
//1.定义数组存储5个学生的年龄
int[] arr1 = new int[]{12,13,14,15,16};
int[] arr2 = {12,13,14,15,16};
//2.定义数组存储3个学生的姓名
String[] arr3 = new String[]{"张三","李四","王五"};
String[] arr4 = {"张三","李四","王五"};
//3.定义数组存储4个学生的身高
double[] arr5 = new double[]{1.93,1.83,1.73,1.63};
double[] arr6 = {1.93,1.83,1.73,1.63};
//输出的是数组的地址值!!!
System.out.println(arr1);
System.out.println(arr2);
System.out.println(arr3);
System.out.println(arr4);
System.out.println(arr5);
System.out.println(arr6);
//解释地址值的格式含义:
//[I@4eec7777
//[D@6d311334
//[:表示当前是一个数组
//D:元素是double类型;L:元素是int类型;
//@: 间隔符号。(固定格式)
//4eec7777;6d311334: 才是数组真正的地址值。(十六进制)
}
}
运算:
三、数组的常见操作
1、数组元素的访问:
(1)索引:
(2)访问格式:
代码:
package com.camellia.demo1.ArrayDemo;
public class ArrayDemo2 {
public static void main(String[] args) {
//利用索引对数组中的元素进行访问
//1.获取数组里的元素
// 格式:数组名[索引]
int[] arr = {1,2,3,4};
//获取数组第一个元素 = 0索引对应的元素
int number = arr[0];
System.out.println(number);//1
//获取数组中1索引对应的数据,并直接打印出来
System.out.println(arr[1]);//2
//2.把数据存储到数组中
//格式: 数组名[索引] = 具体数据/变量;
arr[0] = 100;
System.out.println(arr[0]);
}
}
运算:
2、数组的遍历
(1)定义;
(2)练习题
示例代码:
package com.camellia.demo1.ArrayDemo;
public class ArrayDemo3 {
public static void main(String[] args) {
//方法一:
//1.定义数组
int[] arr1 = {1,2,3,4,5};
//2.获取数组里面所有的元素
//格式:数组名[索引]
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println(arr1[3]);
System.out.println(arr1[4]);
//方法二:
//利用循环:
//开始条件:0
//结束条件:数组长度 - 1 [最大索引]
//1.定义数组
int[] arr2 = {1,2,3,4,5,6,7,8,9,0};
//2.获取数组里面所有的元素
for (int i = 0;i<=10;i++) {
System.out.println(arr2[i]);
}
//方法三:
//在Java当中,关于数组的一个长度属性,length
//调用方式:数组名.length
//System.out.println(arr.length);
//1.定义数组
int[] arr3 = {1,2,3,4,5,6,7,8,9,0};
//2.获取数组里面所有的元素
for (int j : arr3) {
System.out.println(j);
}
//拓展:
//自动快速生成数组的遍历方式
//idea提供的
//数组名.fori
}
}
运算结果:
3、常见问题:
四、常见应用场景
1、求最值
例题:已知数组元素为{33,5,22,44,55},找出数组最大值并打印在控制台
代码:
package com.camellia.demo1.ArrayDemo;
public class ArrayDemo5 {
public static void main(String[] args) {
//定义数组求最大值: 33,5,22,44,55
//1.定义数组来存储5个值
int[] arr = {33, 5, 22, 44, 55};
//2.定义一个变量max用来存储最大值
//max的初始化一定是数组中的值
//临时认为0索引的数据是最大的
int max = arr[0];
//3.循环取数组中每一个元素
//拿着每一个元素和max进行比较
for (int i = 0; i < arr.length; i++) {
//i 索引 arr[i]元素
if (arr[i] > max) {
max = arr[i];
}
}
//4.循环结束之后,max记录的数据是数组中的最大值
System.out.println(max);
}
}
运算结果:
2、求和
例题:生成10个1~100之间的随机数存入数组
1)求出所有数据和
2)求所有数据的平均数
3)统计有多少个数据比平均值小
代码:
package com.camellia.demo1.ArrayDemo;
import java.util.Random;
public class ArrayDemo6 {
public static void main(String[] args) {
/*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;
}
//求和:
//定义求和变量
int sum = 0;
for (int i = 0; i < arr.length; i++) {
//循环得到每一个元素
//并把元素累加到sum中
sum = sum + arr[i];
}
System.out.println("数组中所有的数据的和为:" + sum);
//求所有数据的平均数
int avg = sum / arr.length;
System.out.println("数组中的平均数为:" + avg);
//有多少个数据比平均数小
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.println(arr[i] + " ");
}
}
}
运算结果:
3、交换数据
例题:定义一个数组,存入1,,3,4,5.按照要求交换索引对应的元素
交换前:1,2,3,4,5
交换后:5,2,3,4,1
代码:
package com.camellia.demo1.ArrayDemo;
public class ArrayDemo7 {
public static void main(String[] args) {
/*定义两个变量,交换两个变量记录的值*/
int a = 10;
int b = 20;
//方法一:
a = b;
b = a;
System.out.println(a);
System.out.println(b);
//方法二:
//定义临时第三方变量
int temp = a;
a = b;
b = temp;
System.out.println(a);
System.out.println(b);
//
}
}
运算结果: