Bootstrap

java-初识数组

1. 理解数组基本概念

什么是数组
数组:可以看成是 相同类型元素的一个集合 。在内存中是一段连续的空间。
1. 数组中存放的元素其类型相同
2. 数组的空间是连在一起的
3. 每个空间有自己的编号,其实位置的编号为 0 ,即数组的下标

 


数组的创建及初始化

T[] 数组名 = new T[N];

T :表示数组中存放元素的类型
T[] :表示数组的类型
N :表示数组的长度
int [] array1 = new int [ 10 ]; // 创建一个可以容纳 10 int 类型元素的数组
double [] array2 = new double [ 5 ]; // 创建一个可以容纳 5 double 类型元素的数组
String [] array3 = new double [ 3 ]; // 创建一个可以容纳 3 个字符串元素的数组

 


  数组的初始化
数组的初始化主要分为 动态初始化以及静态初始化 。下面直接用代码块以及注释给大家演示。
int[] a = new int[10];//动态初始化
int[] c;
c=new int[10];//动态初始化的分步进行

int[] b = new int[]{2, 1, 2, 1};//静态初始化,注意{}中的数据类型要与[]前的一致

int[] f={1,12,2,1,};//静态初始化的省略格式

int[] d;
d=new int[]{1,2,1,1};//静态初始化的分步进行

 //int[] array3;
 //array3 = {1, 2, 3}; 错误  注意:静态初始化的省略格式不能分两步,报错
//如果不确定数组当中内容时,使用动态初始化,否则建议使用静态态初始化。

如果没有对数组进行初始化,数组中元素有其默认值
如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,比如:
类型
默认值
byte   0
short  0
int      0
long   0
float   0.0f
double 0.0
char /u0000
boolean false
如果数组中存储元素类型为引用类型,默认值为 null

数组的使用

1. 数组是一段连续的内存空间,因此 支持随机访问,即通过下标访问快速访问数组中任意位置的元素
2. 下标从 0 开始,介于 [0, N )之间不包含 N N 为元素个数,不能越界,否则会报出下标越界异常。

遍历数组

所谓 " 遍历 " 是指将数组中的所有元素都访问一遍 , 访问是指对数组中的元素进行某种操作 ,比如:打 印。
//首先用循环的方式进行遍历,数组名.length可以表示数组长度
for (int i = 0; i <b.length ; i++) {
    System.out.println(a[i]);

}
//或者可以使用foreach来进行遍历,foreach在遍历所有的元素时较为简便,但是不够灵活,例如你想打印除了最后一个其他的元素,它是办不到的,
for (int x:b) {
    System.out.println(x);

}

System.out.println(f);//直接打印得不到想要的结果
//将数组转字符串,再进行打印
String s = Arrays.toString(f);
System.out.println(s);
//或者直接打印,道理相同
System.out.println((Arrays.toString(a)));

数组的复制
public class arraycopy {
    public static void main(String[] args) {
        int[] a={2,2,1,1,1,};
        int[] b=a;
        b[0]=10;
        System.out.println(Arrays.toString(a));//b和a引用的是同一个数组 因此b修改空间中内容之后,a也可以看到修改的结果

        a[0]=1;
        b=Arrays.copyOf(a,a.length);
        System.out.println("a="+Arrays.toString(b));//使用Arrays中copyOf方法完成数组的拷贝:  copyOf方法在进行数组拷贝时,创建了一个新的数组 a和b引用的不是同一个数组

        a[0]=3;
        System.out.println("a="+Arrays.toString(a));
        System.out.println("b="+Arrays.toString(b));//此时a修改其引用数组中内容时,对b没有任何影响


        int[]c=Arrays.copyOfRange(a,2,4);
        System.out.println("c="+Arrays.toString(c));//部分拷贝,使用Arrays.copyOfRange
         }

    }

执行结果

[10, 2, 1, 1, 1]
a=[1, 2, 1, 1, 1]
a=[3, 2, 1, 1, 1]
b=[1, 2, 1, 1, 1]
c=[1, 1]

;