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
引用数据类型 在这里插入图片描述
4.内存简化结构
在这里插入图片描述
在这里插入图片描述
左边是栈,右边是堆。arr1指向了新的空间,原来的空间就在一定时间后被回收。(但是这个String放在常量池,先这么理解指向,不要看String,后面在解释String)

多维数组

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

在这里插入图片描述
说明:int x,y---->int [] x,y等价于[]对xy都有用
int[] x,y[] 等价于 int[]x int []y[] ,所以x是一维数组,y是二维数组。

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

2.回环数
在这里插入图片描述
在这里插入图片描述
3.随机数
先把范围变为[]闭区间,[a,b]
公式:(int)(Math.random()*(b-a+1)+a)
4.数组复制操作
在这里插入图片描述
在这里插入图片描述
会发现,虽然操作的是数组二,但是再次打印数组一的时候。数值发生了变化。原因如下图:
在这里插入图片描述
如果用下面的方法复制,就不会指向同一个地址,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
在这里插入图片描述

数组反转
在这里插入图片描述
在这里插入图片描述

Array工具类
例如:
在这里插入图片描述
fill会将原来所有的值,都改为传入的值
binarySearch找到返回下标,为找到返回负数
数组常见的异常:
1.数组越界异常
2.空指针异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值