Java一维数组详解

1 一维数组

1.1 数组的定义

  在Java中,可以用如下格式定义一个数组:数据类型 [] 数组名 = new 数组类型 [数组长度] eg:int [] arr=new int [100]:就相当于在内存中定义了100个int类型的变量,第一个变量的名称为arr[0]…………第100个变量的名称为arr[99],每个变量的默认值均为0;

1.2 数组初始化

1.2.1 数组动态初始化

  数组动态初始化(声明并开辟数组)数据类型 [] 数组名称 = new 数组类型 [长度] ; eg:int [] data=new int [5] //声明并开辟一个长度为5的整形数组

  • 数组的访问通过索引完成。即“数组名称[索引]”,数组索引是从0开始,因此索引的范围就是0~索引-1;如果超出索引访问,就会产生java.long.ArrayIndexOutOfBoundsException(数组下标越界异常)(运行时异常)。
  • 当数组采用动态初始化开辟后,数组之中的每个元素都是该数据类型的默认值。
  • 数组名.length取得数组长度。
  • 数组属于引用数据类型,因此在使用之前一定要开辟空间,否则就会产生java.long.NullPointerException(空指针异常)(运行时异常)
    范例:定义一个整形数组
public class Test{
    public static void main(String[] args)
    {
        int [] x=null;
        System.out.println(x.length);
        x[0]=1;
        x[1]=2;
        x[2]=3;
        for(int i=0;i<=x.length;i++)
        {
            System.out.print(x[i]+" ");
        }
    }
}

在这里插入图片描述

  • 数组遍历推荐使用for-each循环
public class Test{
    public static void main(String[] args)
    {
        int [] x=new int [3];
        System.out.println(x.length);
        x[0]=1;
        x[1]=2;
        x[2]=3;
        for(int i:x)
        {
            System.out.print(i+" ");
        }
    }
}

在这里插入图片描述

1.2.2 数组静态初始化

  在之前的数组定义中,有一个明显的特点:数组首先开辟空间,而后再使用索引进行内容的设置,这种定义数组的方式成为动态初始化。而数组在定义的同时设置内容,叫做静态初始化。语法一共分为以下两种:(推荐使用第二种完整格式)
   1.简化格式:数据类型 [] 数组名称 ={值,值,……}
   2.完整格式:数据类型 [] 数组名称 =new 数据类型 []{值,值,……}
  在数组定义时直接设置内容,根据值的个数确定数组长度且长度不可修改

范例:

public class Test{
    public static void main(String[] args)
    {
        int [] x=new int []{1,2,4,5,6,3,55};
        System.out.println(x.length);
        for(int i:x)
        {
            System.out.print(i+" ");
        }
    }
}

在这里插入图片描述
范例:观察匿名数组

public class Test{
    public static void main(String[] args)
    {
        System.out.println(new int[]{1,3,5,7,9}.length);
    }
}

在这里插入图片描述

1.3 数组空间的开辟

代码:

public class Test{
    public static void main(String[] args)
    {
        int [] x=new int [3];
        System.out.println(x.length);
        x[0]=10;
        x[1]=20;
        x[2]=30;
        for(int i=0:x)
        {
            System.out.print(i+" ");
        }
    }
}

在这里插入图片描述

1.3.1数组引用传递

  数组作为引用数据类型,也一定能发生引用传递。
  引用传递空间:同一块堆内存空间可以被不同的栈内存所指向

范例:

public class Test{
    public static void main(String[] args)
    {
        int [] x=new int [3];
        int [] tmp=null;
        System.out.println(x.length);
        x[0]=10;
        x[1]=20;
        x[2]=30;
        tmp=x;
        tmp[0]=90;
        for(int i:x)
        {
            System.out.print(i+" ");
        }
    }
}

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhao_miao/article/details/83041412