java学习记录六:数组

一、数组的概念

java中的数组就是一个容器,可以存储多个数据,但是数据的类型必须一致
特点:
(1)可以存储多个数据
(2)多个数据的类型必须保持一致
(3)数组一旦创建,长度是永远不可以发生改变

二、数组的格式

//数据类型[ ] 数组名    推荐这个
//数据类型  数组名[ ]
int[] arrA = new int[3] //创建可以存储3个int数据的数组

数据类型决定数组只能存储这种类型的数据

三、数组变量的理解

数组变量存储的是地址值,指向数据存储在内存种的地址值,打印数组变量打印的是一个地址值。只能根据索引打印对应的数据,但是打印超出索引的会报错。

public class shuzu {
    public static void main(String[] args) {
        int[] arr =  {1,2,3,4};
        System.out.println(arr);//打印的是一个地址值[I@1b6d3586,一个16进制的整数数字
        System.out.println(arr[0]);//可以根据索引打印对应的数据,但是打印超出索引的会报错
        
    }
}

四、数组的初始化和默认值

1.初始化

第一种

int[] arr1 = new int[7]
//创建一个长度为7 的数组

第二种

int[] arr2 = new int[]{1,2,3,4,5}
//创建一个长度为5的数组,并且赋好了值,此时右边[]里不能再写长度了,jvm会根据{}里的长度来定义数组的长度,再写长度就会报错。

第三种

int[] arr3 = {1,2,3,4}
//简洁的写法,推荐这种写法。

2.数组默认值

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

    }

数组创建后,未赋值,此时默认值根据前面的数据类型都不一样
1.整数: 0
2.小数: 0.0
3.字符: 空白字符
4.布尔: false

四、数组的使用

1.数组的长度

arr.length//得到数组有多少个元素

2.修改数组

数组为引用类型,变量保存的是数组在内存中的地址,当修改数组时,同一个地址值的数组都会受到影响

  int[] arr6 = {1,2,3};
        int[] arr7 = arr6;
        arr6[0] =100;
        System.out.println(arr7[0]);//此时arr7的第一个值也变为100。基本类型不会发生这样的影响,只有引用类型会发生

五、JAVA中内存的分配

1.内存概念

编写的程序是在硬盘中,运行是在内存中。运行完后会清空内存,java是在虚拟机运行的,虚拟机是在内存中。

2.java虚拟机中内存分配

区域名称作用
寄存器给CPU使用,和开发无关
本地方法栈JVM在使用操作系统功能的时候使用
方法区存储可以运行的class文件,运行时会到方法栈中
堆内存存储对象或者数组,new来创建的,都存储在堆内存中
方法栈方法运行时使用的内存,比如main方法运行,进入方法栈中执行

六、数组访问异常类

1.超出索引,越界异常

不能访问超过数组长度的数据,会报错

int[] one = {100,200,300}
 //System.out.println(one[5]);//索引5: 不存在,报出数组索引越界异常

2.空指针异常

int[] one = null;
        System.out.println(one);//null
        //System.out.println(one[0]);//错误: 控制针异常

当设置数组为null时,可以打印数组为null,但不能访问数组内指定索引元素,会报空指针异常

七、遍历数组

       int[] array = {10,20,30,50};
 for (int i = 0; i < array.length; i++) {
            //System.out.println("索引编号: "+i+", 对应的元素值: "+array[i]);
            System.out.println(array[i]);
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值