从未表白的棒棒糖 · 【Kotlin】初识Kotlin(一) - ...· 2 周前 · |
爱搭讪的手套 · 【python】详解numpy.vector ...· 1 周前 · |
眼睛小的米饭 · Python ...· 1 周前 · |
耍酷的啄木鸟 · Numpy数组-腾讯云开发者社区-腾讯云· 1 周前 · |
害羞的铁板烧 · 两个numpy变量拼接成一个 - CSDN文库· 1 周前 · |
挂过科的山楂 · Using kubeadm to ...· 3 月前 · |
唠叨的石榴 · Bash script throws ...· 12 月前 · |
飞奔的回锅肉 · ASP.NET MVC - DrHao - 博客园· 1 年前 · |
自信的可乐 · 1.hive开窗函数,分析函数 - ...· 1 年前 · |
成熟的圣诞树 · Python中单引号,双引号,3个引号的用法 ...· 1 年前 · |
Java 语言中提供的数组是用来存储固定大小的同类型元素。
你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。
本教程将为大家介绍 Java 数组的声明、创建和初始化,并给出其对应的代码。
首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
下面是这两种语法的代码示例:
Java语言使用new操作符来创建数组,语法如下:
arrayRefVar = new dataType[arraySize];上面的语法语句做了两件事:
一、使用 dataType[arraySize] 创建了一个数组。数组变量的声明,和创建数组可以用一条语句完成,如下所示:
dataType[] arrayRefVar = new dataType[arraySize];另外,你还可以使用如下的方式创建数组。
dataType[] arrayRefVar = {value0, value1, ..., valuek};数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。
下面的语句首先声明了一个数组变量 myList,接着创建了一个包含 10 个 double 类型元素的数组,并且把它的引用赋值给 myList 变量。以上实例输出结果为:
总和为: 11367.373下面的图片描绘了数组 myList。这里 myList 数组里有 10 个 double 元素,它的下标从 0 到 9。
数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。
该实例完整地展示了如何创建、初始化和操纵数组:
以上实例编译运行结果如下:
Total is 11.7 Max is 3.5JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。
语法格式如下:
for(type element: array) System.out.println(element); 该实例用来显示数组 myList 中的所有元素:TestArray.java 文件代码:
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (double element: myList) { System.out.println(element);以上实例编译运行结果如下:
数组作为函数的参数
数组可以作为参数传递给方法。
例如,下面的例子就是一个打印 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});数组作为函数的返回值
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;以上实例中 result 数组作为函数的返回值。
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:
String[][] str = new String[3][4];多维数组的动态初始化(以二维数组为例)
1. 直接为每一维分配空间,格式如下:
type[][] typeName = new type[typeLength1][typeLength2];type 可以为基本数据类型和复合数据类型,typeLength1 和 typeLength2 必须为正整数,typeLength1 为行数,typeLength2 为列数。
int[][] a = new int[2][3];二维数组 a 可以看成一个两行三列的数组。
2. 从最高维开始,分别为每一维分配空间,例如:
String[][] s = new String[2][]; s[0] = new String[2]; s[1] = new String[3]; s[0][0] = new String("Good"); s[0][1] = new String("Luck"); s[1][0] = new String("to"); s[1][1] = new String("you"); s[1][2] = new String("!");s[0]=new String[2] 和 s[1]=new String[3] 是为最高维分配引用空间,也就是为最高维限制其能保存数据的最长的长度,然后再为其每个数组元素单独分配空间 s0=new String("Good") 等操作。多维数组的引用(以二维数组为例)
对二维数组中的每个元素,引用方式为 arrayName[index1][index2],例如:
num[1][0];Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
给数组赋值:通过 fill 方法。 对数组排序:通过 sort 方法,按升序。 比较数组:通过 equals 方法比较数组中元素值是否相等。 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。 具体说明请查看下表:
public static int[] reverse(int[] arr){ int[] result = new int[arr.length]; for (int i = 0,j=result.length-1; i < arr.length; i++,j--) { result[j] = arr[i]; return result;
Jabin
957***846@qq.com
飞翔的蒲公英
dar***o@163.com
angelra
264***8638@qq.com
Hantn
473***567@qq.com
WaterHole
710***626@qq.com
import java.util.Arrays; public class TestArrays { public static void output(int[] array) { if (array != null) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); System.out.println(); public static void main(String[] args) { int[] array = new int[5]; // 填充数组 Arrays.fill(array, 5); System.out.println("填充数组:Arrays.fill(array, 5):"); TestArrays.output(array); // 将数组的第2和第3个元素赋值为8 Arrays.fill(array, 2, 4, 8); System.out.println("将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):"); TestArrays.output(array); int[] array1 = { 7, 8, 3, 2, 12, 6, 3, 5, 4 }; // 对数组的第2个到第6个进行排序进行排序 Arrays.sort(array1, 2, 7); System.out.println("对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):"); TestArrays.output(array1); // 对整个数组进行排序 Arrays.sort(array1); System.out.println("对整个数组进行排序:Arrays.sort(array1):"); TestArrays.output(array1); // 比较数组元素是否相等 System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):" + "\n" + Arrays.equals(array, array1)); int[] array2 = array1.clone(); System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):" + "\n" + Arrays.equals(array1, array2)); // 使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确) Arrays.sort(array1); System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):" + "\n" + Arrays.binarySearch(array1, 3)); // 如果不存在就返回负数 System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):" + "\n" + Arrays.binarySearch(array1, 9));输出结果:
填充数组:Arrays.fill(array, 5): 5 5 5 5 5 将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8): 5 5 8 8 5 对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7): 7 8 2 3 3 6 12 5 4 对整个数组进行排序:Arrays.sort(array1): 2 3 3 4 5 6 7 8 12 比较数组元素是否相等:Arrays.equals(array, array1): false 克隆后数组元素是否相等:Arrays.equals(array1, array2): 元素3在array1中的位置:Arrays.binarySearch(array1, 3): 元素9在array1中的位置:Arrays.binarySearch(array1, 9):
支上上
849***107@qq.com
数组容量如果不够用可以使用 Arrays.copyOf() 进行扩容:
Array.copy(E[] e,newLength);
其第一个形参指的是需要扩容的数组,后面是扩容后的大小,其内部实现其实是使用了 System.arrayCopy(); 在内部重新创建一个长度为 newLength 类型是 E 的数组。
import java.util.Arrays; public class Main { public static void main(String[] args) { int[] a= {10,20,30,40,50}; a= Arrays.copyOf(a,a.length+1); for(int i=0;i<a.length;i++) { System.out.println(a[i]);默认补 0,输出结果为: 10 20 30 40 50 0
支上上
849***107@qq.com
tfbyly
905***717@qq.com
路过顺便打酱油
782***197@qq.com
好劲的维
pal***@qq.com
java.util.Arrays.sort 只可以用于按升序排列数组,若按降序排序可以使用 Arrays.sort(数组,Collections.reverseOrder()) 。
调用的其实 Arrays.sort 的静态方法之一 Arrays.sort(Integer[] a,Comparator cmp)。
对于 Collections.reverseOrder() 官方解释:reverseOrder() 方法用于获取一个比较有否就实现 Comparable 接口的对象的集合的自然顺序相反。
import java.util.Arrays; import java.util.Collections; public class Main { public static void main(String []args) { Double[] list_double = new Double[10]; list_double[0] = 1.2; list_double[1] = 2.2; list_double[2] = 8.2; list_double[3] = 4.2; list_double[4] = 7.2; list_double[5] = 6.2; list_double[6] = 5.2; list_double[7] = 4.2; list_double[8] = 9.2; list_double[9] = 10.2; java.util.Arrays.sort(list_double); System.out.println("升序:"); for(double emp:list_double) System.out.println(emp); Arrays.sort(list_double,Collections.reverseOrder()); System.out.println("降序:"); for(double emp:list_double) System.out.println(emp); }
耍酷的啄木鸟 · Numpy数组-腾讯云开发者社区-腾讯云 1 周前 |
害羞的铁板烧 · 两个numpy变量拼接成一个 - CSDN文库 1 周前 |
唠叨的石榴 · Bash script throws syntax errors when the 'extglob' option is set inside a subshell or function - St 12 月前 |
飞奔的回锅肉 · ASP.NET MVC - DrHao - 博客园 1 年前 |