JAVA 数组

案例

案例1

一个人最多拿10瓶啤酒,那么如何拿20瓶啤酒?

案例2

一个班级的学生有30人,如何用变量表示这30人的数学成绩?用30个变量吗?

应该使用数组,数组的作用相当于上面的啤酒箱,可以装入30人的数学成绩

int lilei=80;
int hanmeimei=87;
.........
int lucy=85;

数组

数组就是:集合,存储相同类型的数据,按一定的 顺序排列,且存储的数量是固定的

总结:

  • 同类型
  • 有序
  • 长度固定
  • 引用类型

声明数组变量

方式一

数据类型[] 数组名字;
解释:
  • 数据类型: 创建的数组可以存储什么数据类型。
  • [] : 表示数组
  • 数组名字: 满足标识符规范,可以使用名字操作数组。

方式二(不推荐)

数据类型 数组名字[];

这种风格是来自 C/C++ 语言 ,Java采用是为了让 C/C++ 程序员能够快速理解java语言。

静态初始化

方式一

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};

或者

数据类型[] 数组名;
数组名 = new 数据类型[]{元素1,元素2,元素3...};
解释:
  • new:关键字,创建数组使用的关键字。

例子:
定义存储1,2,3,4,5整数的数组容器。

int[] arr = new int[]{1,2,3,4,5};
int[] array4;
array4=new int[]{85,80,92,83};

方式二

数据类型[] 数组名 = {元素1,元素2,元素3...};

例子:
定义存储1,2,3,4,5整数的数组容器

int[] arr = {1,2,3,4,5};

动态初始化

格式

数据类型[] 数组名字 = new 数据类型[长度];

或者

数据类型[] 数组名字;
数组名字 = new 数据类型[长度];
解释:
  • new:关键字,创建数组使用的关键字。

  • [长度]:数组的长度,表示数组容器中可以存储多少个元素。

注意: 数组长度一旦指定,不可更改。

例子:

定义可以存储3个int型的数组

int[] arr = new int[3];

或

int arr[] = new int[3];

这种写法不推荐

默认初始化

创建数组后,java就会对每个元素进行 初始化 :

  • 整型数组:数组每个元素的值都为 0
  • 浮点型数组:每个元素的值都为 0.0
  • 字符型数组:每个元素的值都为'',ASCII码中0位置的字符,即空字符
  • 布尔型数组:每个元素的值都为false

数组的操作

索引

相当于 编号 ,数组中的每一个元素,都会有一个编号,从0开始

注意: 索引从0开始

数组的访问

初始化数组后,通过 索引 访问

格式:

数组名[索引]

例子:

查看动态初始化数组的元素值:

int arr[] = new int[3];
System.out.println(arr[0]);

执行结果为:0

int arr[] = new int[]{1,2,3};
System.out.println(arr[0]);

数组的修改

通过索引修改

格式:

数组名[索引]=值;

例子:

int arr[]=new int[3];
arr[0]=10;
arr[1]=20;
arr[2]=30;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);

数组的长度属性

数组都有长度,而且是固定的,通过 数组名.length获取,int类型。由次可以推断出

数组的最大索引:数组名.length-1

 public static void main(String[] args) { 
   int[] arr = new int[]{1,2,3,4,5}; 
   //打印数组的属性,输出结果是5
   System.out.println(arr.length);
}

数组遍历【重点】

就是将数组中的每个元素获取出来,需要配合 循环语句

int[] arr = { 1, 2, 3, 4, 5 };

for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

练习

找出最大值

从数组的所有元素中找出最大值。

实现思路:

  • 定义变量,保存数组0索引上的元素
  • 遍历数组,获取出数组中的每个元素
  • 将遍历到的元素和保存数组0索引上值的变量进行比较
  • 如果数组元素的值大于了变量的值,变量记录住新的值
  • 数组循环遍历结束,变量保存的就是数组中的最大值
int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
int max = arr[0];
//遍历数组,取出每个元素
for (int i = 0; i < arr.length; i++) {
    //遍历到的元素和变量max比较
    //如果数组元素大于max
    if (arr[i] > max) {
        //max记录住大值
        max = arr[i];
    }
}
System.out.println("数组最大值是: " + max);

数组的反转

数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1
实现思想:数组最远端的元素互换位置。

  • 实现反转,就需要将数组最远端元素位置交换
  • 定义两个变量,保存数组的最小索引和最大索引
  • 两个索引上的元素交换位置
  • 最小索引++,最大索引—,再次交换位置
  • 最小索引超过了最大索引,数组反转操作结束
int[] arr = {1, 2, 3, 4, 5};
/*
循环中定义变量min=0最小索引 max=arr.length‐1最大索引 min++,max‐‐
*/
for (int start = 0, last = arr.length - 1; start <= last; start++, last--) {
    //利用第三方变量完成数组中的元素交换
    int temp = arr[start];
    arr[start] = arr[last];
    arr[last] = temp;
}
// 反转后,遍历数组
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

原文出处:/show_1EF4rGMMsTxB.html