【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中的内容以字符串的形式返回
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值