Java学习数组

一、数组初始化

方式:分为静态初始化和动态初始化

静态:数据类型[] 数组名={data,data,data};

            数据类型[] 数组名=new 数据类型{data,data,data};

动态:数据类型[] 数组名=new 数据类型[指定长度];

int[] arr1={11,22,33,44};//静态初始化法一
int[] arr2=new int[]{1,33,44,56};//静态初始化法二
//动态初始化
int[] arr2=new int[10];

静态和动态都可以分两步走

//静态
int[] arr1;
arr1=new int[]{12,44,34};
//动态
int[] arr2;
arr2=new int[10];

如果没有初始化,各数据类型的数组都有默认值

二、数组使用

通过下标访问,从0开始,到n-1,长度为n

int[] arr4={12,243,54,67};//长度为4
System.out.println(arr[0]);
System.out.println(arr[3]);//下标最大为三,超过就越界

可通过arr4.length来获取数组长度

遍历访问

最简单的,通过for循环让下表不断+1来访问

另一种:

for(int x:arr4)//":"右边为你要遍历的数组名,左边为改数组元素的数据类型
{
    System.out.println(x);
}

三、数组指向NULL

例如下面这种情况

int[] arr3=null;

访问的时候会提示NullPointerException,即空指针异常

四、数组作为形参传入方法内需注意的点

 public static void fun2(int[] arr){
        arr=new int[]{89,23,56};
    }
public static void main(String[] args){
    int[] arr1=new int[]{12,34,54,67};
    fun2(arr1);
    System.out.println(Arrays.toString(arr1));    
}

当把arr1数组传入fun2的函数后,在主函数内打印arr1时会发现依然是打印出[12,34,54,67]

而不是[89,23,56]

这是因为

在fun2内当new了一个新的数组时,新创建数组的地址也是新的,然后把这个新的地址再赋值给arr

,所以虽然传入的时arr1数组,当执行arr=new int[]{89,23,56}这条语句时,arr指向的不是arr1的地址,因此没有改变arr1的元素

五、数组作为返回值的类型

public static int[] fun(){
        int[] arr={12,45,21,456};
        return arr;
    }
    public static void main(String[] args) {
        int[] arr1=fun();
        System.out.println(Arrays.toString(arr1));

    }

返回了一个地址,赋值给arr1,arr1救指向了堆上{12,45,21,456}的内存空间,所以打印的结果是[12,45,21,456]

六、无返回值对数组进行修改

//无返回值进行对数组的修改
    public static void fun2(int[] arr){
        for (int i=0;i<arr.length;i++){
            arr[i]*=2;//arr[i]=arr[i]*2,改变了堆上的元素
        }
    }
public static void main(String[] args) {
        int[] arr2=new int[]{12,13,14,15};
        fun2(arr2);
        System.out.println(Arrays.toString(arr2));
        返回值的结果为每个元素乘2倍的结果

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值