前言
一、数组介绍
二、数组的定义域静态初始化
public class test8 { public static void main(String[] args) { //格式 //静态初始化 //完整格式 //数据类型 [] 数组名=new 数据类型[]{元素1,元素2...}; //简化格式 //数据类型 [] 数组名={元素1,元素2...}; //需求1:定义数组存储5个学生的年龄 int[] arr1=new int[]{11,12,13,14}; int[] arr2={11,12,13,14}; //需求2:定义数组存储3个学生的姓名 String[] arr3=new String[]{"zhangsan","lisi","wangwu"}; String[] arr4={"zhangsan","lisi","wangwu"}; //需求3:定义数组存储4个学生的身高 double[] arr5=new double[]{1.93,1.65,1.68,1.71}; double[] arr6={1.93,1.65,1.68,1.71}; } }
三、数组元素访问
数组地址中的小拓展:
解释一下地址值的格式含义
[: 表示当前是一个数组
D: 表示当前数组里面的元素都是double类型的
I: 表示当前数组里面的元素都是int类型的
@: 表示一个间隔符号(固定格式)
776ec8df才是数组真正的地址值(十六进制)
平时我们习惯吧这个整体叫做数组的地址值
public class test8 { public static void main(String[] args) { //格式 //静态初始化 //完整格式 //数据类型 [] 数组名=new 数据类型[]{元素1,元素2...}; //简化格式 //数据类型 [] 数组名={元素1,元素2...}; //需求1:定义数组存储5个学生的年龄 int[] arr1=new int[]{11,12,13,14}; System.out.println(arr1); // int[] arr2={11,12,13,14}; // // //需求2:定义数组存储3个学生的姓名 // String[] arr3=new String[]{"zhangsan","lisi","wangwu"}; // String[] arr4={"zhangsan","lisi","wangwu"}; // // //需求3:定义数组存储4个学生的身高 // double[] arr5=new double[]{1.93,1.65,1.68,1.71}; // double[] arr6={1.93,1.65,1.68,1.71}; /*扩展: 解释一下地址值的格式含义 [: 表示当前是一个数组 D: 表示当前数组里面的元素都是double类型的 I: 表示当前数组里面的元素都是int类型的 @: 表示一个间隔符号(固定格式) 776ec8df才是数组真正的地址值(十六进制) 平时我们习惯吧这个整体叫做数组的地址值 */ } }
四、数组遍历
1.获取数组里面的元素
2.把数据存储到数组中
public class test9 { 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]); } }
3.遍历数组的最快方式
public class test10 { public static void main(String[] args) { //1.定义数组 int arr[]={1,2,3,4,5}; //2.获取数组里面所有的元素 //格式: 数组名[索引] /* System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); */ //利用循环改进代码 //开始条件:0 //结束条件:数组的长度-1(最大索引) //但是当原始数组里面的元素过多,数量不便于数出时,5的位置处该写什么呢? /*for (int i = 0; i < 5; i++) { //i:0,1,2,3,4 System.out.println(arr[i]); }*/ //在Java当中,关于数组的一个长度属性,length //调用方式: 数组名.length for (int i = 0; i < arr.length; i++) { //i:0,1,2,3,4 System.out.println(arr[i]); } //扩展: //自动的快速生成数组的遍历方式 //idea提供的 //数组名.fori for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
4.遍历数组并求和
public class test11 { public static void main(String[] args) { /* 定义一个数组,存储1,2,3,4,5 遍历数组得到每一个元素,求数组里面所有的数据和 */ //分析 //1.定义一个数组并添加数据 int[] arr={1,2,3,4,5}; //求和变量 int sum=0; //2.遍历数组得到一个数据,累加求和 for (int i = 0; i < arr.length; i++) { //i 依次表示数组里面的每一个索引 //arr[i] 依次表示数组里面的每一个元素 sum=sum+arr[i]; } //当循环结束之后,sum的值就是累加之后的结果 System.out.println(sum); } }
5.统计个数
import javax.imageio.metadata.IIOMetadataFormatImpl; public class test12 { /* 定义一个数组存储1,2,3,4,5,6,7,8,9,10 遍历数组的到每一个元素,通技术组里面一共有多少能被3整除的数字 */ public static void main(String[] args) { //分析: //1.定义一个数组,存储1,2,3,4,5,6,7,8,9,10 int[] arr={1,2,3,4,5,6,7,8,9,10}; //定义一个变量,用来统计次数 int count=0; //2.遍历数组得到每一个元素 for (int i = 0; i < arr.length; i++) { //i 表示数组里面的每一个索引 //arr[i] 表示数组里面的每一个元素 //3.判断当前元素是否为3的倍数,如果是的话,统计变量自增一次 if (arr[i] % 3 == 0) { count++; } } System.out.println("数组中能被3整除的数字有"+count+"个"); } }
6.变化数据
public class test13 { public static void main(String[] args) { /* 定义一个数组存储1,2,3,4,5,6,7,8,9,10 遍历得到每一个元素 要求: 如果是奇数,将当前数字扩大两倍 如果是偶数,将当前数字变为原来的1/2 */ //分析 //1.定义一个数组存储数据 int[] arr={1,2,3,4,5,6,7,8,9,10}; //2.遍历数组得到每一个元素 for (int i = 0; i < arr.length; i++) { if(arr[i]%2==0){ arr[i]=arr[i]/2; }else { arr[i]=arr[i]*2; } } //遍历数组 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
五、数组动态初始化
1.数组默认初始化值的规律
整数类型:默认初始化值0 小数类型:默认初始化值0.0 字符类型:默认初始化值'\u0000' 空格 布尔类型:默认初始化值 false 引用数据类型:默认初始化值 null
public class test14 { public static void main(String[] args) { /* 定义一个数组,用来存班级中50个学生的姓名 姓名未知,等学生报名之后,再进行添加 */ //格式: //数据类型[] 数组名=new 数组类型[数组的长度] //在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值 String[] arr=new String[50]; //添加学生 arr[0]="zhangsan"; arr[1]="lisi"; //获取 System.out.println(arr[0]);//zhangsan System.out.println(arr[1]);//lisi System.out.println(arr[2]);//打印出来的是默认初始化值null //数组默认初始化值的规律 //整数类型:默认初始化值0 //小数类型:默认初始化值0.0 //字符类型:默认初始化值'\u0000' 空格 //布尔类型:默认初始化值 false //引用数据类型:默认初始化值 null int[] arr2=new int[3]; System.out.println(arr2[0]);//0 System.out.println(arr2[1]);//0 System.out.println(arr2[2]);//0 } }
2.数组动态初始化和静态初始化的区别
六、数组内存图
1.Java内存分配
2.数组的内存图