Java快速入门(21) - 数组和Arrays类

本文介绍了Java中的数组,包括声明、创建和处理数组的方法,详细讲解了使用增强for循环遍历数组和将数组作为参数传递给方法。此外,还探讨了Java util Arrays类的功能,如排序和填充等操作。
摘要由CSDN通过智能技术生成

前言

Java提供了数组这种数据结构,用来存储固定大小的相同类型的元素的顺序集合。数组是数据的集合,通常情况下,可以认为数组是存储相同类型变量的集合。
除了可以声明独立的变量,例如number0,number1,…,number99,我们还可以声明一个变量数组然后用numbers[0],numbers[1],…,numbers[99]来表示变量。
本节教程我们一起来学习一下如何声明数组变量,创建数组,以及使用索引来处理数组。

声明数组变量

要想在程序里使用数组,我们必须声明一个变量来引用数组,并且指定变量可以引用的数组的类型。下面是声明数组变量的语法。

语法

dataType[] arrayRefVar;   //首选的方式
or
dataType arrayRefVar[];  //可行,但不是首选

注意:声明数组变量时推荐使用“dataType[] arrayRefVar”这种写法,"dataType arrayRefVar[]"这种写法是C或C++语言里常用的,这种写法在Java中被支持是为了照顾从C/C++语言转到Java的程序员。

应用举例

下面是声明数组变量的一个例子。

double[] myList; //首选的方式
double myList[]; //可行,但不是首选

创建数组

我们可以使用new关键字来创建数组。

语法

arrayRefVar = new dataType[arraySize];

上面的语句做了两件事情:

  • 使用“new dataType[arraySize]”创建了一个数组
  • 将新创建数组的引用分配给了变量arrayRefVar
    声明一个变量,创建一个数组,以及分配数组的引用给变量,这3个步骤可以使用1个语句完成:
dataType[] arrayRefVar = new dataType[arraySize];

或者,我们还可以按下面的方式来创建数组:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

数组里的元素通过索引(index)来访问。索引从0起始,也就是,从0起始到数组长度-1(arrayRefVar.length-1)。

应用举例

下面的语句声明了一个数组变量myList,创建了一个包含10个double类型元素的数组,并将myList变量指向数组的引用:

double[] myList = new double[10];

下图表示的是myList变量的构成,可以看出myList包含了10个double类型的值,其索引为从0到9。

处理数组

当处理数组元素时,通常使用的是for循环或增强for循环,这是因为数组里的元素都是同一种类型,并且数组的大小是已知的。

程序举例

下面程序里展示了如何创建、初始化和处理数组:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
     
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);  
   }
}

程序输出为:

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

使用增强for循环遍历数组

JDK 1.5之后开始支持一种新的for循环:增强for循环,其可以按顺序完整遍历数组而不用使用索引变量。

使用举例

下面代码会打印输出myList数组中的所有元素。

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

程序输出为:

1.9
2.9
3.4
3.5

将数组作为参数传入方法

正如可以给方法传入基本数据类型的参数一样,我们也可以将数组作为参数传入方法。例如,下面程序中printArray()方法的参数就是一个int型的数组:

public static void printArray(int[] array) {
   for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
   }
}

我们可以传入数组来调用这个方法。例如,下面的语句可以调用printArray()方法来打印数组中的元素:3,1,2,6,4,2。

printArray(new int[] {3, 1, 2, 6, 4, 2});

方法中返回数组

Java中的方法同样可以返回一个数组。例如,下面程序中的reverse()方法返回的是一个经过逆序排序的数组:

public static int[] reverse(int[] list) {
   int[] result = new int[list.length];

   for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
      result[j] = list[i];
   }
   return result;
}

Arrays类

java.util.Arrays类包含了各种静态方法,使用这些方法可以对数组元素进行排序、查找、比较和填充等等。这些方法对于所有的基本数据类型都是重载的,也就是说,同一个方法名可以支持所有基本数据类型参数的传入。

序号方法 & 描述
1public static int binarySearch(Object[] a, Object key)
使用二进制搜索算法在指定的Object数组(Byte,Int,double等)中搜索指定的值。 在进行此调用之前,必须对数组进行排序。 如果包含在列表中,则返回搜索关键字的索引。
2public static boolean equals(long[] a, long[] a2)
如果两个指定的long数组彼此相等,则返回true。
3public static void fill(int[] a, int val)
将指定的int值分配给指定的int数组的每个元素。
4public static void sort(Object[] a)
根据对象的自然顺序,将指定的对象数组按升序排序。

关注公众号「小白轻松学编程」

更多交流,欢迎微信搜索并关注公众号「 小白轻松学编程」!
博客里所有教程会第一时间在公众号上更新哟,扫码关注一下吧~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值