乐清网站制作公司,山东济宁省建设厅官方网站,网站功能设计指什么,杭州余杭区网站建设Java大数据开发和安全开发 #xff08;一#xff09;Java的数组1.1 静态初始化数组1.1.1 静态数组的定义1.1.2 数组的原理1.1.3 数组的访问1.1.3.1 数组的取值1.1.3.2 数组的赋值1.1.3.3 数组的长度1.1.3.4 数组的使用 1.1.4 数组的遍历1.1.3 数组的案例 1.2 动态初始化数组1… Java大数据开发和安全开发 一Java的数组1.1 静态初始化数组1.1.1 静态数组的定义1.1.2 数组的原理1.1.3 数组的访问1.1.3.1 数组的取值1.1.3.2 数组的赋值1.1.3.3 数组的长度1.1.3.4 数组的使用 1.1.4 数组的遍历1.1.3 数组的案例 1.2 动态初始化数组1.2.1 动态初始化数组的定义1.2.1 数组的案例 1.3 数组的执行原理Java程序的执行原理 一Java的数组
数组就是一个容器用来存储一批同种类型的数据
有变量为什么还用数组?
下面是一个随机点名的系统 假设用变量解决随机点名的需求:
代码繁琐:大量变量的定义。 实现需求繁琐。 假设用数组解决随机点名的需求:
代码简洁。 逻辑清晰。 结论:遇到批量数据的存储和操作时数组比变量更适合
1.1 静态初始化数组
1.1.1 静态数组的定义
定义数组的时候直接给数组赋值
静态初始化数组的格式 注意
“数据类型 [ ] 数组名”也可写成“数据类型 数组名[ ]”什么类型的数组只能存放什么类型的数据。
public class ArrayDemo {public static void main(String[] args) {// 目标:掌握数组的定义方式一:静态初始化数组。// 1、数据类型[] 数组名 new 数据类型[]{元素1元素2元素3,.....}int[] ages new int[]{12,24,36};double[] scores new double[]{89.9,99.5,59.5,88};// 2、简化写法:// 数据类型[] 数组名 {元素1元素2元素3,.....}int[] ages2 {12,24,36};double[] scores2 {89.9,99.5,59.5,88};// 3、数据类型[] 数组名 也可以写成 数据类型 数组名[] int ages3[] {12,24,36}; //不推荐double scores3[] {89.9,99.5,59.5,88};}
}1.1.2 数组的原理
声明一个数组首先是在内存中分出一块盒子盒子内部分成两个区域一个区域保存数组变量一个区域保存数组的值数组的值又分成三部分每个部分独立存储一个数据每个数据都有自己的下标被用来提供访问数组的值在内存中以地址的形式被记录变量中保存的也是数组的内存地址访问数组的变量就会指向这个内存地址从而找到数组的值这也叫传值引用 验证数组变量的值的指向
public class ArrayDemo {public static void main(String[] args) {// 目标:掌握数组的定义方式一:静态初始化数组。// 1、数据类型[] 数组名 new 数据类型[]{元素1元素2元素3,.....}int[] ages new int[]{12,24,36};double[] scores new double[]{89.9,99.5,59.5,88};System.out.println(ages);System.out.println(scores);}
}[I4554617c //指向内存地址
[D74a14482注意:数组变量名中存储的是数组在内存中的地址数组是一种引用数据类型
1.1.3 数组的访问
数组的访问
数组名 [索引]
1.1.3.1 数组的取值
/1 取值
System.out.println(arr[0]);//121.1.3.2 数组的赋值
// 赋值
arr[2] 100;
System.out.println(arr[2]);//1001.1.3.3 数组的长度
数组的长度属性:length
//获取数组的长度(就是数组元素的个数)
System.out.println(arr.length); //3// 3、访问数组的元素个数:数组名.length
System.out.println(arr1.length);
// 技巧:获取数组的最大索引:arr.length-1(前提是数组中存在数据)
System.out.println(arr1.length-1);
int[] arr2 {}; //并不是所有数组的长度都是length-1
System.out.println(arr2.length-1);1.1.3.4 数组的使用
public class ArrayDemo1 {public static void main(String[] args) {//1 访问数组中的值int[] arr1 {12, 25, 63, 45};System.out.println(arr1[0]);System.out.println(arr1[1]);System.out.println(arr1[2]);System.out.println(arr1[3]);//2 修改数组中的值System.out.println(arr1[0]21);System.out.println(arr1[1]22);System.out.println(arr1[2]23);System.out.println(arr1[3]24);}
}1.1.4 数组的遍历
遍历:就是一个一个数据的访问
public class ArrayDemo1 {public static void main(String[] args) {//1 访问数组中的值int[] arr1 {12, 25, 63, 45};System.out.println(arr1[0]);System.out.println(arr1[1]);System.out.println(arr1[2]);System.out.println(arr1[3]);for (int i 0; i arr1.length;i){System.out.println(arr1[i]); //访问}//2 修改数组中的值System.out.println(arr1[0]21);System.out.println(arr1[1]22);System.out.println(arr1[2]23);System.out.println(arr1[3]24);for (int i 0; i arr1.length;i){arr1[i] i1; //赋值System.out.println(arr1[i]);}// 3、访问数组的元素个数:数组名.lengthSystem.out.println(arr1.length);// 技巧:获取数组的最大索引:arr.length-1(前提是数组中存在数据)System.out.println(arr1.length-1);int[] arr2 {}; //并不是所有数组的长度都是length-1System.out.println(arr2.length-1);}
}为什么要遍历数组?
求和 元素搜索 找最大值、最小值
1.1.3 数组的案例 public class ArrayDemo2 {public static void main(String[] args) {// 目标:完成对数组的元素求和。// 1.定义一个数组存储5名员工的销售额int[] arr1 {16,26,36,6,100};//3、定义一个变量用于累加求和int sum 0;//2、遍历这个数组中的每个数据。for (int i0;iarr1.length;i){sum arr1[i];}System.out.println(员工的销售总额: sum);}
}1.2 动态初始化数组
1.2.1 动态初始化数组的定义
定义数组时先不存入具体的元素值只确定数组存储的数据类型和数组的长度静态初始化和动态初始化数组的写法是独立的不可以混用
数组的动态初始化格式
import java.util.Random;public class ArrayDemo3 {public static void main(String[] args) {// 目标:掌握定义数组的方式二:动态初始化数组。// 1、数据类型[]数组名new 数据类型[长度]int[] ages new int[3]; //ages [0,0,0]System.out.println(ages[0]);System.out.println(ages[1]);System.out.println(ages[2]);ages[0] 12;ages[1] 18;ages[2] 32;System.out.println(ages[0]);System.out.println(ages[1]);System.out.println(ages[2]);// 2、动态数组循环赋值 数据类型[]数组名new 数据类型[长度]int[] arr1 new int[10];for (int i0; i10;i){Random r new Random();int num r.nextInt(10);arr1[i] num;}System.out.println(arr1.length);}
}
动态初始化数组元素默认值规则:
public class ArrayDemo3 {public static void main(String[] args) { int[] age1 new int[3]; //age1 [0,0,0]System.out.println(age1[0]);System.out.println(age1[1]);System.out.println(age1[2]);char[]chars new char[3];// [0,0,0]System.out.println((int)chars[0]);System.out.println((int)chars[2]);double[] scores new double[80];// [0.0, 0.0]System.out.println(scores[0]);System.out.println(scores[79]);boolean[] flags new boolean[100]; // [false, false]System.out.println(flags[0]);System.out.println(flags[99]);String[] names new String[80];// [null, null]System.out.println(names[0]);System.out.println(names[79]);}
}两种数组定义的方法各自适合什么业务场景?
动态初始化:适合开始不确定具体元素值只知道元素个数的业务场景静态初始化:适合一开始就知道要存入哪些元素值的业务场景
1.2.1 数组的案例 import java.util.Scanner;public class ArrayDemo4 {public static void main(String[] args) {// 目标:完成评委打分的案例。// 1、定义一个动态初始化的数组负责后期存储6个评委的打分。double[] scores new double[6];System.out.println(scores.length);double sum 0;Scanner sc new Scanner(System.in);// 2、遍历数组中的每个位置录入评委的分数存入到数组中去for (int i0;iscores.length;i){System.out.println(请输入第 (i1)位裁判的评分);double num sc.nextDouble();scores[i] num;}//3、遍历数组中的每个元素进行求和for (int j0; j scores.length;j){sum scores[j];}System.out.println(选手的平均分为 sum / scores.length);}
}1.3 数组的执行原理Java程序的执行原理
java程序在编译后会产生一个class文件 Java程序运行时会把class文件放到内存中的JVM虚拟机中执行 Java为了便于虚拟机运行class文件将虚拟机中的内存区域进行了划分划分成了方法区、栈、堆本地方法栈、程序计数器 在这里插入代码片