数组:
1.学习一项技术,我们都需要思考一个问题,这个技术产生打的背景是什么
扩展:他可以解决这一个问题,还是他可以解决这一类问题?
我可以通过这一个能力解决这一类问题
能给我们解决的问题(学了之后的应用场景)
数组初识:
1.数组是什么?
变量能够用来干什么?-------->存值,参与表达式的运算
而数组可以多个基础类型,就比如变量是一个盒子,而数组是摆一排一系列的盒子
2.数组的特性:
(1)数组装的一定相同类型的数据思考(圈子不要强融,强融没有意义)
(2)数组的类型包括基本数据类型,和String
(3)数组为引用类型
3.数组的下标
4.数组的应用场景(数组能够来干什么)
比如我现在有一个班50个学生需要存储成绩
1.定义50个变量
2.使用数组
数组的定义与初始化
语法
静态初始化:
指定数组要存储的长度,系统会自动计算它的长度
数据类型 数组名 【】 = new 数据类型【】{数据1、数据2、…}
int arr [] = new int []{1,2,3,4,5} //静态化定义一个数组,并直接把数据给数组
//系统自动识别数据长度然后开辟内存空间
简化写法:
int arr [] = {1,2,3,4,5}
动态初始化:
数据类型 数组名 = new 数据类型 【数组长度】
int arr = new int [5] //动态化定义一个长度为5的int型数组
double arr1 = new dpuble [5] //动态化定义一个长度为5的double数组
区别:
静态化定义数组,用在全部数据已经明确的给了出来的场景
动态化定义数组,用在数据还不确定,先开辟内存空间,之后在存储数据的场景
数组的使用
案例1:给定数组{6,3,8,4,6,7},获取数组的第3个元素
public class Test1 {
public static void main(String[] args) {
//1.已知数组使用静态定义
int [] arr = {6,3,8,4,6,7};
//2.输出数组中的顶3个元素,及下标2
System.out.println(arr[2]);
}
}
案例2:求数组{6,3,8,4,6},求数组中所有元素的和
方式一:直接输出对应位置元素
public class Test2_1{
public static void main(String[] args){
//1.已知数组使用静态定义
int [] arr = {6,3,8,4,6,7};
int sum = 0;
sum += arr[0];
sum += arr[1];
sum += arr[2];
sum += arr[3];
sum += arr[4];
System.out.println(sum);
}
}
方式二:for循环求和
1.循环结束控制条件 i < arr.lenght (数组长度)
for循环遍历数组,如果i从等于0开始,则可以完全遍历数组
public class Test2_2{
public static void main(String[] args){
//1.已知数组使用静态定义
int [] arr = {6,3,8,4,6,7};
int sum = 0;
for(int i = 0 ; i < arr.length ; i++){
sum += arr[i];
}
System.out.println(sum);
}
}
案例三:求数组{72,89,65,58,87,91,53,82,71,93,76,68}最大值,最小值
解题思路:
- 将数组的第一个元素当做最大值赋值给max变量,最小值赋值给min变量(两两比较,在赋值)
- for循环i=1开始遍历数组
- if判断,如果arr[i]>max,就把他赋值给max,如果有arr[i]<min,就把他赋值给min
public class Test3 {
public static void main(String[] args) {
int [] arr = {88,55,44,33,11,77,64,93,25};
//把数组的第一个元素先假设为最大、最小元素
int max = arr[0];
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]){
max = arr[i];
}else if(min > arr[i]){
min = arr[i];
}
}
System.out.println("最大值是:arr["+max+"]");
System.out.println("最小值是:arr["+min+"]");
}