数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同。但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构。尽管Java提供了很棒的集合API和集合类如:ArrayList、HashMap,他们内部都是基于数组。如果你是来自于基于c或c++背景的程序员,那么你会发现一些关于数组的行为和如何在Java工作中的异同。最值得注意的是C中的数组与Java中的数组的边界检查,c编译器不检查如果程序访问无效的数组索引,而java如果程序尝试访问无效的数组索引的话jvm会抛出ArrayIndexOutOfBoundException。在这篇文章中,我们看看Java中的数组,包括原生类型和对象类型的数组,下面就介绍些有关Java数组及属性的知识点。
Java数组101
(译注:101指介绍某件事,读者不需要任何预备知识)
1)数组在Java中是一个对象,数组实例同样是使用new操作符创建的。Array.length指定了数组长度,例如:
1
2
3
4
|
int [] intArray =
new int [ 10 ];
System.out.println(intArray.length)
Output: 10
|
Array.length 表示数组的容量,只要数组创建了,每一个索引被初始化为默认值。
2)数组索引起始为0,负数索引在Java中是无效的,会抛出ArrayIndexOutOfBoundException ,如果你尝试用无效的索引访问数组,这个无效的索引可能是一个负索引,或者是大于等于数组长度的索引。
3)数组存储在Java堆的连续内存空间,所以如果你创建一个大的索引,你可以有足够的堆空间直到抛出OutofmemoryError,因为请求的内存大小在连续的内存空间不可用。
4)数组一个固定长度 的数据结构,一旦声明,你不能改变数组的长度。
5)不同类型的数组有不同的类型,例如下面例子,intArray.getClass()不同于floatArray.getClass()
1
2
|
int [] intArray =
new int [ 10 ];
float [] floatArray =
new float [ 10 ];
|
1
|
6 )你不能存储 double 值在 int 数组中,否则导致编译错误。
|
1
2
|
int [] intArray =
new int [ 10 ];
intArray[ 5 ]= 1.2 ;
|
如果尝试在运行时做这个操作,那么Java抛出ArrayStoreException
7)在Java数组中可以有不同方式的创建方式,这里就是创建数组的例子:
1
2
3
4
|
int [] intArray;
int
intArray1[];
int [] intArray2 =
new int [ 10 ];
int [] intArray3 =
new int []{ 1 , 2 , 3 , 4 };
|
你既可以选择在创建数组的时候初始化数组,也可以以后通过for循环初始化,中括号既可以在变量的前面也可以在变量后面。
第一种方法是方便的创建多个数组如:
int[] array1, array2
这里的array1和array2是整型数组,而第二种方法你需要放两次括号如:
int array1[], array2[]
尽管在风格上没有很多不同,我读“int[] ”叫int数组,这种写法更容易被理解。
8)如果没有明确的初始化数组元素,那么数组就会用默认的类型值初始化,例如假若没有初始化整型数组,元素都将默认值为0,没有初始化的boolean值是false,对象数组是null。
9)你可以通过使用[]操作符访问数组元素,因为数组索引起始于0,[0]返回第一个元素,[length-1]返回最后一个元素,for循环是一种迭代整个数组便捷方法。你可以使用for循环初始化整个数组、访问的每个索引或更新、获取数组元素。Java5同样提供了加强的for循环,数组自己管理索引,防止ArrayIndexOutOfBoundException,这里是一个迭代的例子:
传统的方式:
1
2
3
4
5
6
7
8
9
10
11
12
|
int [] numbers =
new int []{ 10 ,
20 , 30 ,
40 , 50 };
for
( int i =
0 ; i < numbers.length; i++) {
System.out.println( "element at index "
+ i + ": "
+ numbers[i]);
}
Output:
element at index
0 : 10
element at index
1 : 20
element at index
2 : 30
element at index
3 : 40
element at index
4 : 50
|
加强的for循环
1
2
3
4
5
6
7
8
9
10
|
for ( int
i: numbers){
System.out.println(i);
}
Output:
10
20
30
40
50
|
正如你看到的,加强的for循环不需要检查数组索引,如果你想逐个地访问所有的元素这是一种很好的方法,但是同时因为你不能访问索引,你就不能修改数组元素。
10)Java中数组可以轻易的转换成ArrayList。ArrayList一个基于索引的集合,它是作为数组的备选方案。ArrayList的优点是可以改变容量大小,只需要创建个更大的数组然后拷贝内容到新数组,但你不能改变数组的大小。
11)JavaAPI同样提供了一些便捷方法通过java.utils.Arrays类去操作数组,通过使用Arrays你可以排序数组,你可以做二分搜索。
12)java.lang.System类提供了实用方法拷贝元素到另一个数组。在拷贝内容从一个数组到另一个数组的时候System.arrayCopy非常强大和灵活。你可以拷贝整个或子数组,具体看你的需求。
System.arraycoy语法:
1
|
public
static void arraycopy(Object src,
int srcPos, Object dest,
int destPos,
int length)
|
如你所见,arraycopy允许我们指定索引和长度,能很灵活给你拷贝子数组和存储到需要的位置或目标数组。这里是一个例子,拷贝前三个元素到目标数组:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public
static void main(String args[]) {
int [] source =
new int []{ 10 ,
20 , 30 ,
40 , 50 };
int [] target =
new int [ 5 ];
System.out.println( "Before copying" );
for ( int
i: target){
System.out.println(i);
}
System.arraycopy(source,
0 , target,
0 , 3 );
System.out.println( "after copying" );
for ( int
i: target){
System.out.println(i);
}
}
Output:
Before copying
0
0
0
0
0
after copying
10
20
30
0
0
|
你可以看到拷贝之前所有元素是0,之后前三个元素被替换了。
13)Java同样支持多维数组,在表示2D和3D的时候非常有用,像行和列或矩阵。多维数组也是一个数组的数组,这里是创建多维数组的例子:
1
|
int [][] multiArray =
new int [ 2 ][ 3 ];
|
这是数组有2行3列,或者说长度是2的数组中,它的每个元素里保存的是长度为3的数组,这里是初始化多维数组的例子:
分享到:
相关推荐
在Java编程语言中,数组是一种基础且重要的数据结构,它允许程序员存储一组具有相同类型的数据。数组的概念简单来说就是内存中连续存储的同一...对于初学者来说,熟练掌握数组的使用是成为优秀Java程序员的关键一步。
java开发学习,数组测试,这是java初学者可以使用的java数组范例,简洁明了,很容易学习
适合初学者学习操作JAVA数组
java学习中数组复制函数的调用方法,供java初学者入门参考使用,分享给大家
Java初学者必备基础教材主要涵盖了Java语言的核心概念和基本元素,是学习编程的入门路径。以下将详细解析这些知识点: 1. **Java语言与面向对象的程序设计**:Java是一种面向对象的语言,这意味着它强调通过类和...
目标是帮助初学者建立对Java数组的基本理解,为后续的编程学习和实践打下坚实的基础。 【其他说明】 文章采用通俗易懂的语言,避免了复杂的编程术语,使得初学者也能轻松理解。同时,文章还提供了实际代码示例,帮助...
掌握在Java数组中进行查找的基础知识对于任何初学者来说都是必要的。通过理解并实现线性查找算法,你可以开始探索更复杂的搜索技术,如二分查找,这在处理已排序的数组时提供了更高的效率。总之,理解并能够应用这些...
尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,不妨过来讨论一下哦! 第1章 Java概述 1.1 Java的发展史 1.1.1 Java起源 1.1.2 Java发展 1.2 Java是什么 1.2.1 Java语言 1.2.2 Java平台 1.2.3 ...
在Java编程语言中,数组是一种基础且重要的数据结构,它允许我们存储同类型的多个元素在一个单一的变量中。数组操作是编程中常见的任务,包括创建、初始化、访问、修改...这有助于初学者更好地掌握Java数组的基本操作。
这个名为"200个Java初学者必看的小程序.rar"的压缩包文件,显然是一个专为Java新手设计的学习资料集合。其中包含的200个小程序涵盖了各种基础和进阶的编程概念,可以帮助学习者巩固理论知识,提高实践能力。 首先,...
总之,Java数组操作不仅是初学者必须熟练掌握的技能,也是程序设计中不可或缺的基础知识。 综上所述,本Java实验报告通过分步骤的演示和详细分析,清晰地展示了如何在Java环境下进行数组的声明、初始化、遍历、复制...
总之,这个资源包似乎提供了一个学习Java数组操作和理解如何在实际项目中使用数组的实例,特别是关于数组的连接和相加操作。对于想要提升Java编程技能,特别是数组处理能力的初学者来说,这是一个有价值的参考资料。...
"200个Java初学者必看的小程序"是一个专门为新手设计的学习资料,旨在帮助初学者快速掌握Java的基础知识和编程技巧。 在Java初学者的旅程中,小程序是一种有效的学习工具,它们通常包含简洁的代码片段,涵盖了各种...
### Java数组应用详解 #### 一、一维数组 ##### 1.1 一维数组的定义 在Java中,数组是一种存储同类型元素的数据结构。数组中的元素可以通过索引进行访问,索引是从0开始的整数。一维数组的定义有两种常见的形式:...
【标题】"java小游戏和java数组.zip"是一个针对初学者的资源包,它包含了使用Java编程语言开发的小游戏源代码以及可能与数组相关的教学材料。这个压缩包旨在帮助初学者通过实际操作和互动来理解Java语言的基础,特别...
对于初学者而言,理解并掌握Java的基础知识是至关重要的。下面我们将详细探讨Java初学者在220个实例中可能会遇到的知识点。 1. **基础语法**:包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符...
标题“java初学者必看,从零开始”意味着文档是一个面向初学者的Java学习教程。初学者通常指的是没有或仅有很少编程经验的人,他们需要从基础概念学起。而“从零开始”强调的是学习过程将从最基本的元素讲起,无需...
"Java初学者必看PPT"是软件工程学院的教师精心准备的教学资料,旨在帮助新手快速理解并上手Java编程。这份PPT的特点在于讲解内容清晰,同时配合了实际的代码示例,使得理论与实践相结合,更加直观易懂。 Eclipse是...
本文将深入探讨Java中数组的各种应用,旨在帮助初学者理解并掌握数组的使用。 一、数组定义与初始化 在Java中,数组可以看作是同类型元素的有序集合。例如,你可以创建一个整型数组来存储一系列的整数。数组的定义...
在实验中,学生需要编写使用Java数组的程序,理解数组的声明、初始化和访问元素的方法。 5. **控制流结构**:Java的控制流包括顺序结构(按顺序执行语句)、选择结构(if-else)和循环结构(for、while、do-while)...