一、基本概念

1.数组

  • 数组:相同类型元素的集合,在内存中是一段连续的空间

2.创建一个数组

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

3.初始化一个数组

  • 动态初始化
    直接指定元素个数:int [ ] arr=new int[10];
  • 静态初始化
    在创建数组时不指定数组元素个数,而直接把内容指定
int[ ] arr=new int[ ]{1,2,3,4,5};

需要注意的是:

·静态初始化虽然没有指定元素个数,但是编译器会根据{ }里的东西确定长度;
·静态初始化可以省略new T[ ]
如果不确定内容时用动态初始化,确定了内容就得用静态初始化;
·没有初始化的数组中都有默认值,默认0,引用类型默认为null

4.使用一个数组

  • 访问其元素:通过下标访问,但注意数组越界问题
  • 遍历该数组:用数组对象.length获取数组长度,然后通过循环遍历。

二、引用类型

1.JVM的内存分布

Java对数组的引用 java实验数组的引用与元素_开发语言

  • 程序计数器:保存下一条指令;
  • 虚拟机栈:方法执行时创建的栈帧,存储包括:局部变量表、操作数栈、动态链接、返回地址等等。方法运行结束,栈帧销毁。
  • 本地方法栈:存储Native方法的局部变量
  • 堆:new创建的对象保存在了堆上。程序运行时创建,程序退出时销毁。
  • 方法区:存储已被虚拟机加载的类信息、常量、静态变量,编译器编译后的代码等等。

2.引用类型变量

  • 基本类型变量里存放的是对应的值,放在栈帧中
  • 引用类型变量里存放的是对象所在空间的地址,放在堆中

3.NULL
空引用,不指向对象,无效的内存位置,不能进行任何读写操作哦

三、一些数组的操作

  • 数组拷贝
public static void main(String[] args) {
        //方法1--引用赋值给引用
        int [] arr={1,2,3,4,5};
        int [] newArr1=arr;
        //System.out.println(Arrays.toString(newArr));
        //方法2--copyOf
        int [] newArr2=Arrays.copyOf(arr,arr.length);
        System.out.println(Arrays.toString(newArr2));
        //范围内拷贝
        int [] newArr3=Arrays.copyOfRange(arr,1,3);
        System.out.println(Arrays.toString(newArr3));
    }
  • 数组查找–二分查找
public static int binSearch(int[]arr,int num){
        int left=0;
        int right=arr.length-1;
        while (left<right){
            int mid=(left+right)/2;
            if(num<mid){
                right=mid-1;

            }else if(num>mid){
                left=mid+1;
            }else
                return mid;
        }
        return -1;
    }
    public static void main(String[] args) {
        //二分查找
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        System.out.println(binSearch(arr,4));

    }
  • 数组排序–冒泡排序
//冒泡排序
    public static void Bubble(int []arr){
        for (int i = 0; i < arr.length; i++) {
            for (int j = 1; j < arr.length-i; j++) {
                if(arr[j-1]>arr[j]){
                    int tmp=arr[j-1];
                    arr[j-1]=arr[j];
                    arr[j]=tmp;

                }
            }
        }
    }
    public static void main(String[] args) {
        int []arr={2,4,1,5,7,0};
        Bubble(arr);
        System.out.println(Arrays.toString(arr));
    }
Arrays.sort(arr);//也可以直接用Arrays内置方法
        System.out.println(Arrays.toString(arr));