【Java】java中的数组,
分享于 点击 40792 次 点评:80
【Java】java中的数组,
Java中的数组与C语言中的类似,都是一组相关类型的变量集合,并且这一系列变量可
以按统一的方式操作。
首先是数组的定义,语法格式是:类型[] 数组名称=new 类型[数组长度];
//代码示例:
int[] arr=new int[10];//定义一个长度为10的数组,下标从0-9.
arr[0]=1;//动态初始化。
arr[1]=2;
int[] arr2={0,1,2};//静态初始化,在Java中未初始化的数组默认填充为0
注意在使用时不能发生数组越界,即使用的空间超过了数组所开辟的空间。同时也必须
为数组开辟空间,即实例化之后才可以使用。
数组在内存中的存储是,数组的引用即首元素的地址存放在栈上,数组元素存放在堆上,
同一块堆可以被不同的引用指向(这也是浅拷贝的基础)
//代码示例:
int[]arr1=null;
int[] arr2=null;
arr1[0]=1;
arr1[1]=2;
arr1[2]=3;
arr2=arr1;
arr2[0]=30;
最后的结果是arr1[0]的值为30,因为将arr1赋给arr2即他两个指向同一个数组,arr2元素
改变arr1中的元素也相应的发生了变化。
java中的二维数组与C语言中的不同,java中二维数组是不规则的。
//代码示例
int[2][3]arr={{1,2}{1,2,3}}
这个数组在java中指的是有两个一维数组,每个一维数组最长为三个元素,但不一定是三个。
数组也可以通过方法进行处理
//代码示例:
class ArrDemo{
public static void showArray(int []arr){//方法接收数组
for(int i=0;i<arr.length;i++){//arr.length 返回数组的长度
System.out.println(arr[i]);
}
}
public static int[] init(){//方法返回数组
int[]arr1={1,2,3,4};
return arr;
}
}
最后在谈谈java对数组的支持
首先是数组的四种拷贝方式
(1)利用for循环拷贝,这种方式和C语言中相同,不再赘述。
(2)Arrays.copy,利用Arrays类中的copy方法实现对数组的拷贝
//代码示例:
int[]array={1,2,3,4,5,6,7,8,9}
int[]array2=Arrays.copyof(array,array.length);//参数,(原数组,拷贝长度)
(3)System.arrayCopy,System类中的arrayCopy方法,用native修饰(这种拷贝速度最快)
// 代码示例
System.arrayCopy(array,0,array2,0,array.length);
(4)clone
// 代码示例
array2=array.clone();
这四种拷贝方式早拷贝基本类型的时候,都是深拷贝,只有在引用类型的时候是浅拷贝。
然后是Arrays类中对数组的操作支持
Arrays.binarySearch(arr,0,arr.length,5); /*二分查找法查找数组中的元素,如果找到
返回元素下标,如果没找到就以负数返回该值将要插入的位置,参数分别为,需要查找的数组
查找的起始位置,查找的结束位置,查找的值*/
arr2=Arrays.copyOf(arr,4); //拷贝数组为一个新长度,截取或者用0填充
arr2=Arrays.copyOfRange(arr,0,3); //拷贝数组的指定范围
Arrays.equals(arr,arr2); //判断两个数组深层是否相等,返回布尔类型
Arrays.fill(arr2,2,5,4); /*将指定的值填充到数组的指定位置,参数分别为,被填充
数组,其实填充位置,终止填充位置(不包括),填充值*/
Arrays.sout(arr); //对arr数组进行升序排序
System.out.println(Arrays.toString(arr)) //将arr中的内容以字符串的形式返回
相关文章
- 暂无相关文章
用户点评