网站建设基本要求,网站建设与优化合同,网站 自助建站,微信里有人发做任务网站3.数组
3.1什么是数组
数组就是存储数据长度固定的容器#xff0c;存储多个数据的数据类型要一致。
3.2数组定义格式
3.2.1第一种#xff08;常用#xff09;
数据类型[] 数组名
示例#xff1a; int[] arr;
double[] arr;
char[] arr; 3.2.2第二种(在…3.数组
3.1什么是数组
数组就是存储数据长度固定的容器存储多个数据的数据类型要一致。
3.2数组定义格式
3.2.1第一种常用
数据类型[] 数组名
示例 int[] arr;
double[] arr;
char[] arr; 3.2.2第二种(在C语言的格式)
数据类型 数组名[]
示例 int arr[];
double arr[];
char arr[]; 在学习C语言的时候我们只能用第二种如下图所示因此大家也习惯比较使用第二种格式但是学习java语言有必要知道这两种都用的多。 3.3数组静态初始化
3.3.1什么是静态初始化
在创建数组时直接将元素确定坦白地说就是知道每个元素的值。
3.3.2静态初始化格式 完整版格式 数据类型[] 数组名 new 数据类型[]{元素1,元素2,...};
举例
int[] arr new int[]{1,2,3,4}; 简化版格式 数据类型[] 数组名 {元素1,元素2,...};
举例
int[] arr {1,2,3,4};
当然下面这种格式也可以 注意这种写法在java语言中用的不多但要会很多人只是在先学了C语言后有写成这种代码的习惯。建议用上面的写法。
3.3.3静态初始化格式详解 等号左边 int:数组的数据类型 []:代表这是一个数组 arr:代表数组的名称 等号右边 new:为数组开辟内存空间 int:数组的数据类型 []:代表这是一个数组 {}:表示数组里面存储的所有元素
3.4数组元素访问
3.4.1什么是索引
每一个存储到数组的元素都会自动的拥有一个编号从0开始。
这个自动编号称为数组索引(index)可以通过数组的索引访问到数组中的元素。 所谓的索引在数组中就指的是下标。
3.4.2访问数组元素格式 数组名[索引]; 3.4.3索引的作用 利用索引可以获取数组中的元素 利用索引可以把数据存储到数组中
3.4.4示例代码 public class ArrayDemo {public static void main(String[] args) {int[] arr new int[3];
//输出数组名System.out.println(arr); //[I880ec60
//输出数组中的元素System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
} 如下是打印一个数组的地址 解释一下这个输出值的含义
[ 表示数组
I 表示数据类型是int型如果是double型数组就会打印D 是规定一个符号。
后面的8个数字是16进制的数字是真真正的地址。 再看C语言的
只看后八个数字。它们是真正的地址。
练习1数组的遍历
遍历把数组里面所有的元素都一一获取出来 代码示例 //1.定义数组int[] arr {1,2,3,4,5};//2.遍历数组for (int i 0; i arr.length; i) {System.out.println(arr[i]);}System.out.println(---------------快速生成最终代码--------------------);//数组名.fori这是个快捷方式务必掌握。 强调一下这个快捷方式 数组名.fori这是个快捷方式务必掌握点击回车后 自动生成我们需要的循环代码而且循环控制是数组的长度。这个无比记住并且在今后写代码尽量用这个快捷方式能方便很多。
练习2累加求和
需求
定义一个数组存储1,2,3,4,5
遍历数组得到每一个元素求数组里面所有的数据和
代码示例 //1.定义数组
int[] arr {1,2,3,4,5};
//2.定义一个累加变量sum
int sum 0;
//3.遍历数组得到数组里面的每一个元素
for (int i 0; i arr.length; i) {//i 依次表示数组中的每一个索引//arr[i] 依次表示数组中的每一个元素//System.out.println(arr[i]);sum sum arr[i];
}
//4.当循环结束之后表示所有的数据都已经累加成功
System.out.println(sum); 练习3统计个数
需求
定义一个数组存储1,2,3,4,5,6,7,8,9,10 遍历数组得到每一个元素统计数组里面一共有多少个能被3整除的数字
代码示例 //1.定义数组1,2,3,4,5,6,7,8,9,10
int[] arr {1,2,3,4,5,6,7,8,9,10};
//2.定义统计变量
int count 0;
//3.遍历数组得到每一个元素
for (int i 0; i arr.length; i) {//3.判断当前元素是否满足if(arr[i] % 3 0){count;}
}
//4.循环结束之后就表示数组里面所有的元素都已经统计完毕
System.out.println(count); 练习4变化数据
需求
定义一个数组存储1,2,3,4,5,6,7,8,9,10
遍历数组得到每一个元素。
要求
1如果是奇数则将当前数字扩大两倍
2如果是偶数则将当前数字变成二分之一
代码示例 public class ArrDemo7 {public static void main(String[] args) {/*定义一个数组存储1,2,3,4,5,6,7,8,9,10遍历数组得到每一个元素。要求1如果是奇数则将当前数字扩大两倍2如果是偶数则将当前数字变成二分之一*/// 1 2 3 4 5 6 7 8 9 10// 2 1 6 2 10 3 14 4 18 5//1.定义数组int[] arr {1,2,3,4,5,6,7,8,9,10};//2.遍历数组得到每一个元素for (int i 0; i arr.length; i) {//3.判断每一个元素是奇数还是偶数if(arr[i] % 2 0){// 偶数则将当前数字变成二分之一arr[i] arr[i] / 2;}else{// 奇数则将当前数字扩大两倍arr[i] arr[i] * 2;}}//3.当循环结束之后数组里面所有的数据都已经改变完毕//再遍历验证一下即可//一个循环只干一件事情。//如果想要遍历再写一个循环即可for (int i 0; i arr.length; i) {System.out.print(arr[i] );}}
} 这里说一下System.out.print这个是不换行的写法。而System.out,println是换行的写法它是先打印光标再换行。
3.5数组动态初始化
3.5.1什么是动态初始化
数组动态初始化就是只给定数组的长度由系统给出默认初始化值。
3.5.2动态初始化格式 数据类型[] 数组名 new 数据类型[数组长度]; int[] arr new int[3]; 3.5.3动态初始化格式详解 等号左边 int:数组的数据类型 []:代表这是一个数组 arr:代表数组的名称 等号右边 new:为数组开辟内存空间 int:数组的数据类型 []:代表这是一个数组 5:代表数组的长度 下图是动态初始化不同数据类型的默认初始值
看一个例子 可见引用类型的默认初始值为null
3.6数组操作的两个常见小问题
3.6.1索引越界异常 出现原因 public class ArrayDemo {public static void main(String[] args) {int[] arr new int[3];System.out.println(arr[3]);}
} 数组长度为3索引范围是0~2但是我们却访问了一个3的索引。 程序运行后将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中数组的越界异常是不能出现的一旦出现了就必须要修改我们编写的代码。 解决方案 将错误的索引修改为正确的索引范围即可
3.6.2空指针异常 出现原因 public class ArrayDemo {public static void main(String[] args) {int[] arr new int[3];
//把null赋值给数组arr null;System.out.println(arr[0]);}
} arr null 这行代码意味着变量arr将不会再保存数组的内存地址也就不允许再操作数组了因此运行的时候会抛出 NullPointerException 空指针异常。在开发中数组的越界异常是不能出现的一旦出现了就必须要修改我们编写的代码。 解决方案 给数组一个真正的堆内存空间引用即可
3.7数组的练习
3.7.1数组最值 最大值获取从数组的所有元素中找出最大值。 实现思路 定义变量保存数组0索引上的元素 遍历数组获取出数组中的每个元素 将遍历到的元素和保存数组0索引上值的变量进行比较 如果数组元素的值大于了变量的值变量记录住新的值 数组循环遍历结束变量保存的就是数组中的最大值 代码实现 //扩展1max的值能不能写0最好不要写0。
// 一般都会赋值数组中的某个元素
//扩展2循环从0开始或者循环从1开始对结果有没有影响
// 没有
// 如果循环从0开始那么多了一次自己跟自己比的过程。
// 对结果没有任何影响只不过多循环了一次而已。
//1.定义数组存储元素
int[] arr {33,5,22,44,55};
//2.定义一个变量max
int max arr[0];
//3.遍历数组
for (int i 1; i arr.length; i) {// i 索引 arr[i] 元素if(arr[i] max){max arr[i];}
}
//4.当循环结束之后max记录的就是最大值
System.out.println(max);
3.7.2遍历数组统计个数
需求生成10个1~100之间的随机数存入数组
1求出所有数据的和
2求所有数据的平均数
3统计有多少个数据比平均值小
代码示例 import java.util.Random;
public class ArrDemo13 {public static void main(String[] args) {//1.定义数组int[] arr new int[10];//2.生成10个随机数存入数组Random r new Random();for (int i 0; i arr.length; i) {//生成随机数int number r.nextInt(100) 1;//把生成的随机数存入数组arr[i] number;}//3.求和int sum 0;for (int i 0; i arr.length; i) {//累加sum sum arr[i];}//4.平均数int avg sum / arr.length;//5.统计int count 0;for (int i 0; i arr.length; i) {if(arr[i] avg){count;}}//6.循环结束之后打印countSystem.out.println(count);}
} 以下的练习day05学习
3.7.3交换数组中的数据
本题的前置练习1 交换两个变量的值
int a 10;
int b 20;
//把a原本的值做了临时存储
int c a;
//把b的值交给了a。
a b;
//把c的值交给b
b c;
System.out.println(a);
System.out.println(b);
本题的前置练习2 把0索引的元素跟最后一个元素进行交换
int[] arr {1,2,3,4,5};
//第一个和最后一个交换
// 5 2 3 4 1
int temp arr[0];
arr[0] arr[4];
arr[4] temp;
for (int i 0; i arr.length; i) {System.out.println(arr[i]);
} 需求
需求定义一个数组存入1,2,3,4,5。交换首尾索引对应的元素。
交换前1,2,3,4,5
交换后5,4,3,2,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;
}
//3.遍历数组
for (int i 0; i arr.length; i) {System.out.println(arr[i]);
} 这个练习题还是比较重要的首先我们又另外知道了for循环可以有多个初始化语句另外就是本题的算法思想现在我们已经开始在慢慢培养编程思维了。
3.7.4打乱数组中的数据
需求
定义一个数组存入1~5。要求打乱数组中所有数据的顺序。
代码示例 import java.util.Random;
public class ArrDemo18 {public static void main(String[] args) {//需求定义一个数组存入1~5。要求打乱数组中所有数据的顺序。
//核心//从0索引开始进行遍历//拿着遍历到的数据跟数组中的随机索引处进行位置交换//1.定义数组int[] arr {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};//2.利用循环交换每一个索引上对应的元素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;}//当循环结束之后就表示数组里面的每一个元素都跟随机索引进行了交换//当循环结束之后此时就好比已经打乱了数组中的数据。//3.遍历数组for (int i 0; i arr.length; i) {System.out.print(arr[i] );}}
} 好的今天的学习结束。