和鸭哥一起看,Java数组声明及初始化的全貌

简介: 和鸭哥一起看,Java数组声明及初始化的全貌

大家好,我是鸭哥。


数组是相同类型的、用一个标识符封装在一起的基本类型数据序列或对象序列,是最为常见的数据结构。鸭哥今天想聊聊数组的声明和初始化,它在我们的工作中使用频率最高,但是很多相关知识,很多人却未必了解全貌。


数组变量的创建


Java 中提供了两种数组声明风格,


//首选的方法
dataType[] arrayVar;    //一维数组
dataType[][] arrayName;  //二维数组
或者
//非首选,来自C/C++语言风格
dataType arrayVar[];    //一维
dataType arrayName[][];    //二维


使用 new 创建数组,

arrayVar = new dataType[size];
arrayName = new dataType[length1][length2];



第一行的代码做了两件事:先是创建了dataType[size] 数组,然后将新创建数组对象的引用赋值给arrayVar,即引用变量 arrayVar 引用了这个数组。


数组的声明和创建可以一条龙完成,这也是我们平时最常用的写法,



dataType arrayVar = new dataType[size];

数组变量的初始化


一维数组和多维数组的初始化方式是类似的,


//一维数组
int arr[] = new int[]{1, 2, 3, 4, 5};    //第一种初始化方法
int arr2[] = {1, 2, 3, 4, 5};    //第二种
String[] myStringArray = new String[]{"a", "b", "c"};
String[] myStringArray = {"a", "b", "c"};


//二维数组
int myArr[][] = new int[][]{{1, 3}, {2, 4}};
int myArr[][] = {{1, 3}, {2, 4}};

对于多维数组,还可以从最高维开始,分别为每一维分配空间,


String s[][] = new String[2][];
//最高维分配引用空间
s[0] = new String[2];
s[1] = new String[3];
s[0][0] = new String("Do");
s[0][1] = new String("you");
s[1][0] = new String("love");
s[1][1] = new String("Java");
s[1][2] = new String("?");



数组常用的操作技巧


整数数组的快捷初始化方法,


  • 使用 fill() 方法将指定的 int 值分配给int型数组的每个元素


int[] array = new int[3];
// 填充数组Arrays.fill(array, 8);    //等价于array = {8, 8, 8}


  • 使用 IntStream 进行初始化


int [] myIntArray = IntStream.range(0, 100).toArray(); //数组中的元素为0到99
int [] myIntArray = IntStream.rangeClosed(0, 100).toArray(); //数组中的元素为0到100
int [] myIntArray = IntStream.of(12,25,36,85,28,96,47).toArray(); //数组元素的顺序与初始化的顺序相同,等价于 myIntArray = {12,25,36,85,28,96,47};
//数组元素从小到大排序
int [] myIntArray = IntStream.of(12,25,36,85,28,96,47).sorted().toArray();


数组的复制,


  • Arrays 类的 copyOf() 方法和 copyOfRange() 方法可以实现进行数组的复制


//将arr数组复制给数组newArr,新数组的长度为 5
int[] arr = new int[]{12, 34, 45};
int[] newArr[] = Arrays.copyOf(arr, 5);
//将指定范围内的数组元素复制给新数组
int[] arr = new int[]{23, 34, 45, 46, 78};
int newArr[] = Arrays.copyOfRange(arr, 0, 3);   //不包括末尾索引对应的元素,新数组的元素为{23, 34, 45}


数组的排序和查找,


  • Arrays 类的 sort() 方法可以对数组进行排序;查找数组元素可以通过 binarySearch() 方法,能对排序好的数组进行二分查找法操作


int arr[] = new int[]{4, 25, 10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr, 10);    //index = 2,元素在数组中,返回所在位置的索引
int index2 = Arrays.binarySearch(arr, 8);    //index1 = -2,数组中不存在查找元素,返回插入点索引的相反数



关于数组声明和初始化的内容就到这里,可能很多知识大家是知道的,但有了鸭哥的复盘,相信大家心中知识点的脉络和层次就更加清晰了。


在评论区聊聊你的思考吧~


相关文章
|
19天前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
1天前
|
Java
Java 静态变量的初始化顺序
【10月更文挑战第15天】了解 Java 静态变量的初始化顺序对于正确编写和维护代码至关重要。通过深入理解初始化顺序的原理和细节,我们可以更好地避免潜在的问题,并提高代码的质量和可靠性。
|
6天前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
21 4
|
6天前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
13 2
|
14天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
22天前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
39 9
|
20天前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
17 3
|
21天前
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
20 3
|
26天前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
20 6
|
21天前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
20 1