网站产品图怎么做的,网站页面设计效果图,点击进入官方网站,电销做网站的话术1. 认识数组
建议1.5倍速学习#xff0c;并且关闭弹幕。
数组的定义#xff1a;数组是一个容器#xff0c;用来存储一批同种类型的数据。
下述图#xff1a;是生成数字数组和字符串数组。 为什么有了变量还需要定义数组呢#xff1f;为了解决在某些场景下#xff0c;变…1. 认识数组
建议1.5倍速学习并且关闭弹幕。
数组的定义数组是一个容器用来存储一批同种类型的数据。
下述图是生成数字数组和字符串数组。 为什么有了变量还需要定义数组呢为了解决在某些场景下变量实现该功能困难的情况。 如下述需求解决上课随机点名的需求。代码简单逻辑清晰。 在处理同一批数据时候用数组和合适。 2. 数组的定义和访问
2.1 静态初始化数组
与其他类型语言做对比方便记忆。
public class Learn_01 {public static void main(String[] args) {//简化格式-数据类型[] 数组名 {} ;int[] ages {12,24,36};double[] scores {89.3,99.5,59.2,88};}
}
2.2 计算机中数组的原理
当代码执行到 int [] ages 时内存会开辟一个空间即ages, 同时将数据122436存入另一个空间这个空间的地址为i4c87330然后给数组进行标号并且将地址i4c87330存入ages中。 这个存储过程像不像cpp或者c语言中的指针呢其本质是一个道理的。因此数组可以被称为引用数据类型。 代码验证
//简化格式-数据类型[] 数组名 {} ;
int[] ages {12,24,36};
double[] scores {89.3,99.5,59.2,88};
// 输出的是数据的地址
System.out.println(ages);
// 采用这个方法输出的是数据本身
System.out.println(Arrays.toString(ages));
可以看到ages中存入的是数据的地址。 2.3 数组的访问
数组名[索引]
int[] ages {12,24,36};
System.out.println(ages[0]); // 12
System.out.println(ages[1]); // 24
System.out.println(ages[2]); // 36
// 数组访问不能超过数组的长度否则会报错.ArrayIndexOutOfBoundsException
// System.out.println(ages[3]); 数组的遍历
可以通过for循环或者for-each 等遍历数组
可以用于求和、元素搜索和获取最大最小值功能实现等。
//简化格式-数据类型[] 数组名 {} ;
int[] ages {12,24,36};
// 在遍历的时候需要知道数组的长度(ages.length)否则就会报上述错误。
for (int i 0; i ages.length; i) {System.out.println(ages[i]);
}
// for-each 的遍历方式并不需要知道长度每个age本身就是ages中的数据因此直接输出
for (int age : ages) {System.out.println(age);
}
以下讲解求和例子最大最小值的例子可以试着自己实现。
求和
// 方式1数组求和
int sum 0; // 定义变量用于记录求和。
for (int i 0; i ages.length; i) {sum ages[i];
}
System.out.println(sum);
// 方式2数组求和
sum 0;
for (int age : ages) {sum age;
}
System.out.println(sum); 总结 1、数组是引用数据类型。 2、数据的下标默认从零开始。 2.4 动态初始化数组
定义数组时先不存入具体的元素值只确定数组存储的数据类型和数组长度。
动态初始化格式
int[] arr new int[3]
与默认初始化不同的是在动态初始化阶段数据的值都存入默认值0。这里int类型数组的默认值为0. 代码验证
public class Learn_01 {public static void main(String[] args) {int[] ages new int[3];System.out.println(ages[0]); // 结果为0System.out.println(ages[1]); // 结果为0System.out.println(ages[2]); // 结果为0}
} 给数组赋值可以通过for循环的方式也可以通过逐个赋值的方式。
// 这里采用的是逐个赋值的方式。
int[] ages new int[3];
ages[0] 12;
ages[1] 24;
ages[2] 36;
System.out.println(Arrays.toString(ages)); int类型数组的默认动态初始化数据为0那么其他数据类型的初始化数据值为什么 总结 1、动态初始化适合开始不确定具体元素值只知道元素长度的场景。 2、静态初始化适合一开始就知道要存入哪里值的场景。 2.5 案例
莫歌唱比赛需要开发一个系统可以录入六个评委的打分录入完毕后立即输入平均分作为选手得分。 分析 1、评委的分数是后期录入的一开始不知道具体分数因此需要定义一个动态数组。 2、由于分数是手动录入的因此需要使用Scanner读取评分。 代码如下
public class Learn_01 {public static void main(String[] args) {Scanner sc new Scanner(System.in);double[] scores new double[6];for (int i 0; i scores.length; i) {System.out.println(请输入第 (i1) 个评委的评分);scores[i] sc.nextDouble();}System.out.print(选手的得分为);// 保留两位小数可以使用string方式DecimalFormat df new DecimalFormat(#.00);System.out.println(df.format(Arrays.stream(scores).sum()/scores.length));}
}
一般情况下需要去除最大值和最小值然后再去平均值这个可以作为进阶方案你可以自己实现一下发到评论区中。
如何保留两位小数可以参考这篇文章
Java中double保留两位小数的各种方法 2.6 常见问题
1、程序是如何执行呢
首先字节码文件要加载到方法区中。
其次方法运行时所进入的内存变量在栈内存中。
最后采用new命令产生的东西会开辟空间放入堆内存中。 那么如下命令时怎么执行呢 第一步将AppayDemo.class文件存入到方法区中。 第二步将main方法加入到栈中然后执行main方法中的代码。 第三步执行 int a 10; 这一个命令因此会在栈中开辟一个空间生成a这个变量 第四步打印变量a 第五步创建arr变量注意arr和数据存放的位置是不同的。 其他的依此就可以理解了....主要通过arr和索引找到数据值。 2、多个变量指向同一个数据
有了第一个问题的基础那么第二个问题就很好理解了。可以通过操作arr1和arr2然后改变数据中的值。 知乎账号 兜兜转转 - 知乎 (zhihu.com)
擅长领域IRS通信仿真、Java和算法等欢迎在评论区留言
助力每一个梦想