java数组的定义与使用

1.数组定义
最常用的数组定义方式:
开辟空间式:
数组存储的数据类型 数组名称[数组元素个数]=new 数组存储的数据类型[数组元素个数]
比如:int a[]=new int[3];
添加元素:a[0]=1;
a[1]=2;
a[2]=3;
其中 [ ] 中的0,1,2为数组的索引,从0开始:
索引就是数组元素存储的位置标记,从0开始到n-1结束,n为数组元素个数 其中[ ]中索引可以省略不写,第一个元素索引为0,也就是arr[0]=1;存储数组的第一个元素,依次对应。
直接存放元素式:
数组存储的数据类型 数组名称[数组元素个数]={存储元素};
例如:: int arr [ ]={1,2,3,4};
定义了一个存储数据类型为int型的,名称为arr的数组,里面存储的元素为1,2,3,4。
定义一个二维数组:
int arr[][]={{1,2},{3,4},{5,6}};
[][]分别代表行和列的索引,例如arr[0][0],就是第一行第一列的元素
2.数组遍历
数组名.length 表示数组的长度
经常使用for循环:

 遍历一维数组:
for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}
 遍历二维数组:
 for(int i=0;i<arr.length;i++){
       for(int j=0;i<arr[i].length;j++){
    System.out.println(arr[i][j]);
    }
    }

还可以这样写:
for(循环变量类型 循环变量名称 :要被遍历的对象){}

for(int i:arr){
        System.out.println(i);
    }

这种方式更为简便,与一般for语句遍历结果一样。
3.返回和修改数组

public class B {
    public static void main(String[] args) {
        int b[]=a();
        update(b);
        printfArray(b);
    }
    //返回数组的方法
    public static int[] a(){
        return new int[]{1,2,3,4,5};
    }
    //遍历数组
    public static void printfArray(int []arr){
        for(int i=0;i<arr.length;i++)
        {
            System.out.println(arr[i]);
        }
    }
    //修改数组
    public static void update(int []arry){
        for (int i=0;i<arry.length;i++)
        {
            arry[i]+=1;     //每个元素+1
        }
    }
}

4.数组拷贝
数组拷贝有几种方式:
1.for语句直接遍历要复制的数组,对应元素位置赋值
例如:将a1[]数组拷贝到a2[]中:
定义的被拷贝数组长度要小于或等于拷贝数组的长度
否则会发生数组越界异常:ArrayIndexOutOfBoundsException

  for(int i=0;i<a1.length;i++){
                    a2[i]=a1[i];
                    }
  1. 调用System.arraycopy(原数组名称,原数组开始点,目标数组名称,目标数组开始点,拷贝长度);

    public static void main(String[] args) {
             int a[]={1,2,3,4,5,6,7};
             int b[]={8,9,10,11,12,13,14};
             System.arraycopy(a,0,b,0,6);
             for(int i=0;i<b.length;i++){
                 System.out.println(b[i]);
             }
         }
    

上面程序输出结果为:1 2 3 4 5 6 14
成功将数组a的前6个元素拷贝到数组b上。
3.数组动态扩容拷贝(java集合框架就是用此方法动态扩容):
调用方法:Arrays.copyof(原数组名称,新数组长度);

public static void main(String[] args) {
        int a[]={1,2,3,4,5,6,7};
        int b[]=Arrays.copyOf(a,7);
        for (int i=0;i<b.length;i++)
        {
            System.out.println(b[i]);
        }
    }

4.调用clone();方法
Arrays.toString(数组名);可以将数组以字符串形式打印出来:
下方运行出来结果就为:
[1,2,3,4,5,6,7,8]
[1,2,3,4,5,6,7,8]

 public static void main(String[] args) {
        int[] a1=new int[]{1,2,3,4,5,6,7,8};
        int[] a2=new int[a1.length];
        a2=a1.clone();
        System.out.println(Arrays.toString(a1));
        System.out.println(Arrays.toString(a2));
        }

重点:
四种数组拷贝方式中拷贝最快的为System.arraycopy();因为其底层是用C/C++写的。
四种拷贝方式对于基本类型来说都是深拷贝,对于引用类型来说都是浅拷贝。

关于深拷贝和浅拷贝的详细介绍有兴趣的可以去:

https://blog.csdn.net/baiye_xing/article/details/71788741

5.对象数组的动态初始化(经常用):
格式:类名称[] 对象数组名称=new 类名称[长度];

 public class B {
        private String name;
        private int age;
        public B(String name,int age){
            this.name=name;
            this.age=age;
        }
        public void get(){
            System.out.println("姓名:"+this.name+"年龄:"+this.age);
        }   
}
public class A{
    public static void main(String[] args) {
        B[] b={new B("a",1),
                new B("b",2),
                new B("c",3)};
        for(int i=0;i<b.length;i++){
            b[i].get();
        }//调用get方法获取name和age
    }
}

输出结果为:
姓名:a 年龄:1
姓名:b 年龄:2
姓名:c 年龄:3
关于java数组部分暂时就只了解这么多如果有错误或者有高见的,欢迎各位大佬评论区指明,感激不尽!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值