JAVA学习笔记总结(四):数组(Array)
来源:互联网 发布:focusky mac版感觉很木 编辑:程序博客网 时间:2024/05/24 04:45
一维数组
在Java中有两种数据:primitive类型和objects.
数组属于object类型,所以必须用new来创建数组, 同时数组具备一下特性:
1. 数组创建之后就不能改变大小
2. 数组创建之后,若没有指定初始值,则依据数组类型的不同,会预设不同的初始值
int[] myArray; // 定义一个指向数据的refference
myArray = new int[100]; // 创建一个可容纳100个元素的数组,并且用myArray指向它,默认所有的元素值被初始化成0
也可以在创建数组的同时进行初始化, 这种方式不用指定数组的长度:
int[] myArray = {0,3,6,9,12,15,18,21,24,27};
或者
int[] myArray = new int[] {0,3,6,9,12,15,18,21,24,27};
3. 数组有一个length属性,可以取回数组中元素的个数
int arrayLength = myArray.length;
二维数组
二维数组用数组“名称”与“两个索引”来指定存取数组中的元素。
其定义方式与一维数组类似:
int[][] arr = {{1,2,3},
{4,5,6}};
注意length所代表的长度,数组名后直接加上length(如arr.length),所指的是数组有几行; 指定索引后加上length(如arr[0].length),指的是该行拥有的元素,也就是列的数目。
数组的复制
1. 使用System.arraycopy()方法
System.arraycopy(来源,起始索引,目的,起始索引,复制长度);
例如:
int[] arr1 = {1,2,3,4,5};
int[] arr2 = new int[5];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
2. 在Java SE 6中,Arrays类新增了copyOf()方法,可以直接返回一个新的数组对象,而其中包括复制的内容
例如:
import java.util.Arrays;
int[] arr1 = {1,2,3,4,5};
int[] arr2 = Arrays.copyOf(arr1,arr1.length);
Arrays的copyOf()方法返回的数组是新的数组对象,所以改变返回数组中元素的值不会影响原来数组中元素的值。copyOf()方法中第二个变量指定新数组的长度,如果新数组的长度超过原来数组的长度,则多出来的元素会保留数组默认值。
除了copyOf()方法外,还有copyOfRange()方法,可以指定来源数组以及要复制的索引范围:
int arr1 = {1,2,3,4,5};
int arr2 = Array.copyOfRange(arr1,1,4); // 复制索引1开始到索引4(但不包括索引4)的元素,arr2的元素会是2,3,4
Array类
Array类位于java.util包中,它提供了几个方法可以直接使用:
sort() - 对指定数组排序,使用的是快速排序法
binarySearch() - 让你对已排序的数组进行二分查找,如果找到指定的值就返回该值所在的索引,否则就返回负值
fill() - Arrays.fill()将已创建数组的默认值改为指定值
equals() - 比较两个数组中的元素值是否全相等,如果相等返回true,否则返回false
foreach与数组
在Java SE 6中, foreach的语法为:
int[] arr = {1,2,3,4,5};
for(int element : arr)
System.out.println(element);
注意, element类型必须与数组元素类型相同
- JAVA学习笔记总结(四):数组(Array)
- Java学习笔记四:数组
- java学习笔记(四) -- 数组
- Java基础学习笔记:(四)数组
- Swift学习笔记-数组Array
- Java笔记学习总结(四)
- java学习6 数组array
- JAVA学习四:数组
- Java学习笔记之流程控制,数组(四)
- "黑马程序员"数组(Array)学习笔记
- javascript学习笔记之-----Array数组
- php学习笔记九:Array数组
- Fortran学习笔记5(数组Array)
- swift 学习笔记(3)数组- Array
- JAVA学习总结四
- Java学习笔记四
- java学习笔记四
- java学习笔记(四)
- bt5 64位的源
- 【Apache04】Apache虚拟目录/虚拟主机
- Review_2012_11_19_11_20_11_21_11_22_11_23
- 【预览图】【2013/7/6已发布】AstrOrz Player Metro 0.1预览版!Metro界面音乐播放器!
- ZOJ 1203 Swordfish(Kruskal 最小树)
- JAVA学习笔记总结(四):数组(Array)
- 简单数据结构实现——二叉查找树
- 将TaintDroid编译进Android 2.3
- 黑马程序员-ado.net笔记
- Java NIO API详解
- android开发省电之--Determining and Monitoring the Connectivity Status(根据网络连接状况去省电)
- Oracle中的文件的执行命令
- 35 岁前程序员要规划好的四件事
- 35 岁前程序员要规划好的四件事