power by 黑马程序员
数组:数组指的是一种容器,可以用来存储同种数据类型的多个值。
就是在内存中,为数组容器开辟空间,并将数据存入容器的过程。
//需求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
数组的地址值就表示数组在内存中的位置。
[D@5594a1b5
“[”:表示的就是一个数组
“D”:表示当前数组内的元素都是double类型。
“@”:表示一个间隔符号。(固定的格式)
“5594a1b5”:才是数组真正的地址值。(十六进制)
“[D@5594a1b5”:平时习惯性的会把这个整体叫做数组的地址值。
数组名[索引];
索引:也叫做下标、角标。
索引的特点:从0开始,逐个+1增长,连续不间断。
int[] arr = {1,2,3,4,5};
//1、获取数组中的第一个元素
int temp = arr[0];
//2、把数据存储到数组中
arr[2] = 6;
//细节:一旦覆盖之后,原来的数据就不存在了。
数组遍历:将数组中所有的内容取出来,取出来之后可以(打印、求和、判断…)。
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印。
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]);
}
当访问了数组中不存在的索引,就会引发索引越界异常
//定义一个数组
int[] arr = {1,2,3,4,5};
System.out.println(arr[10]);
//这个时候会报:ArrayIndexOutOfBoundsException异常
//原因:访问了不存在的索引
//避免:要知道索引的范围
Random r = new Random()
int number = r.nextInt(100)+1;
//其中 nextInt(100) 是随机生成 0~99 之间(包括0、99)的随机数。
//r.nextInt(100)+1 就是随机生成 1~100之间(包括1、100)的随机数。
//定义一个数组,存入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] + " ");
}
总结:
总结: