Java-数组

1.定义

数组是多个 相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。
格式一:数据类型 [ ] 数组名
                int[ ] arr
格式二:数据类型 数组名 [ ]
                int arr[ ]

2.初始化

1 .静态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行

eg:int[] arr=new int[]{1,2,3}或int[] arr={1,2,3}

2. 动态初始化:在定义数组的同时就为数组元素分配空间并赋值

格式:数据类型[] 数组名=new 数据类型[数组长度]

 eg:int[] arr=new int[3];

Java-数组_第1张图片

例:

String[] arr=new String[50];
arr[0]="张三";
arr[1]="李四";
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[3]);//0

3.元素访问

格式:数组名[索引]
例:
int[] age={18,19,20};
System.out.println(age[0]);

4.数组元素的遍历

String[] name={"xcm","zjy","zyx"};
for(int i=0;i

5.常见问题-索引越界异常

原因:访问量不存在的索引
避免:注意索引的范围(最小索引:0   最大索引:数组长度-1)
String[] name={"xcm","zjy","zyx"};
System.out.println(name[3]);

6.数组的内存图

java内存分配:
栈:方法运行时使用的内存(开始执行时会进栈,代码执行完毕会出栈) 
堆:存储对象或者数组,new来创建的,都存储在堆内存
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用,和开发无关
寄存器:给CPU使用,和开发无关
6.1 单个数组的内存

public class Array {
    public static void main(String[] args)
    {
        int[] arr=new int[2];
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);

    }
}

Java-数组_第2张图片

 改变数组的值之后:

arr[0]=11;
arr[1]=22;
System.out.println(arr[0]);
System.out.println(arr[1]);

Java-数组_第3张图片

 6.2 两个数组指向同 一个空间

public class Array {
    public static void main(String[] args)
    {
        int[] arr1={11,22};
        int[] arr2=arr1;
        System.out.println(arr1[0]);
        System.out.println(arr2[0]);
        arr2[0]=33;
        System.out.println(arr1[0]);
        System.out.println(arr2[0]);
    }
}

Java-数组_第4张图片

 修改arr2的值后:

public class Array {
    public static void main(String[] args)
    {
        arr2[0]=33;
        System.out.println(arr1[0]);
        System.out.println(arr2[0]);
    }
}

Java-数组_第5张图片

总结:当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数字组再次访问的时候都是修改之后的结果了 

你可能感兴趣的:(Java,java,jvm,数据结构)