Java基础知识——数组

数组的概述

一维数组

数组元素可以是普通数据类型,也可以是引用数据类型。
1.初始化声明
int[] nums ;//声明
//静态初始化
nums = new int[]{1001,1002,1003};
//动态初始化
String[] names = new String[5];
在这里插入图片描述
2.数组长度
nums.length
3.默认初始化值
int byte short long 类型 默认为 0
float double 类型 默认为0.0
char 类型 默认 0的ASIIC码(如果输出什么都没有)
用if判断 ==0,是成立的
boolean 类型 默认 false
引用数据类型 Java基础知识——数组_第1张图片
4.内存简化结构
Java基础知识——数组_第2张图片
Java基础知识——数组_第3张图片
左边是栈,右边是堆。arr1指向了新的空间,原来的空间就在一定时间后被回收。(但是这个String放在常量池,先这么理解指向,不要看String,后面在解释String)

多维数组

1.二维数组初始化
Java基础知识——数组_第4张图片
在这里插入图片描述
arr3只指明了一维数组的长度,所以不能直接调用,会出现空指针异常。用下面这种方式可以给没指明二维数组长度的数组设定长度。
在这里插入图片描述
2.默认值
Java基础知识——数组_第5张图片
外层元素的初始化为:地址值
内层元素初始化值为:与一维数组类型对应
在这里插入图片描述
此时,只给出一维数组,对应的二维数组没有。所有找不到二维数组的地址值,就是null
外层元素初始化值:null
内层元素:没有初始化过,报空指针异常
3.二维数组内存解析
Java基础知识——数组_第6张图片

Java基础知识——数组_第7张图片
说明:int x,y---->int [] x,y等价于[]对xy都有用
int[] x,y[] 等价于 int[]x int []y[] ,所以x是一维数组,y是二维数组。

练习:
1.杨辉三角形
Java基础知识——数组_第8张图片
在定义二维数组的时候,由于每个数组的第二维度都不一样,所以不指定。在下面重新new不同长度的一维数组。然后第一列和,最后一斜着的列赋值为1.当到达第三列再利用公式计算。

2.回环数
Java基础知识——数组_第9张图片
Java基础知识——数组_第10张图片
3.随机数
先把范围变为[]闭区间,[a,b]
公式:(int)(Math.random()*(b-a+1)+a)
4.数组复制操作
Java基础知识——数组_第11张图片
Java基础知识——数组_第12张图片
会发现,虽然操作的是数组二,但是再次打印数组一的时候。数值发生了变化。原因如下图:
Java基础知识——数组_第13张图片
如果用下面的方法复制,就不会指向同一个地址,num1和nums2的值就不一样。

public static void main(String args[]){
        int []nums1 = new int[]{1,2,3,4,5};
        int []nums2 = new int[5];
        //nums2 = nums1;
        for (int i = 0;i<nums1.length;i++) {
            if(i%2==0)
                nums2[i] = i;
            else
                nums2[i] = nums1[i];
        }
        System.out.println("num1");
        for (int i = 0;i<nums1.length;i++){
            System.out.print(nums1[i]+" ");
        }
        System.out.println("\nnum2");
        for (int i = 0;i<nums2.length;i++){
            System.out.print(nums2[i]+" ");
        }

    }

num1
1 2 3 4 5
num2
0 2 2 4 4
Java基础知识——数组_第14张图片

数组反转
Java基础知识——数组_第15张图片
Java基础知识——数组_第16张图片

Array工具类
例如:
Java基础知识——数组_第17张图片
fill会将原来所有的值,都改为传入的值
binarySearch找到返回下标,为找到返回负数
数组常见的异常:
1.数组越界异常
2.空指针异常

你可能感兴趣的:(Java基础)