java基础知识4——数组

数组

数组概述

数组是存储多个数据类型一直的变量(元素)的容器
数组既可以存储基本数据类型,也可以存储引用数据类型。

数组的定义格式

第一种:数据类型[] 数组名;
第二种:数据类型 数组名[];
注意:这两种定义做完了,数组中是没有元素值的。

数组的初始化
  • 数组初始化概述:
    Java中的数组,必须初始化后才能使用
    所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
  • 数组的初始化方式:
    分为动态初始化和静态初始化两种
静态初始化:
    int[] arr = new int[]{1,2,3,4};
    可简化为int[] arr = {1,2,3,4};
    含义:创建了一个存放int数据类型的名叫arr的数组,数组中包含元素1234
    动态初始化就是在创建数组时直接赋初始值,有系统自动计算数组长度
动态初始化:
    int[] arr = new int[3];
    含义:创建了一个存放int数据类型的名叫arr的数组,数组长度是3
    静态初始化就是在创建数组时给定数组长度,有系统自动赋初始值
数组的内存分配
  • JVM内存划分
    Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
    栈:存放局部变量(定义在方法中的变量,方法一旦执行完,即销毁局部变量)
    堆:存放所有new出来的数据,在堆内存中的数据都是有首地址的,并且在堆内存中的数据都是由默认初始值的(byte\short\int\long:0;float\double:0.0;char:’\u0000’;boolean:false;引用数据类型:null),当对内存中的对象使用完时,由垃圾回收器在空闲时将其回收
    方法区:存放整个程序中永远唯一的元素,如class,static变量。
    本地方法区:和系统相关
    寄存器:给CPU使用
  • 一个数组的内存图
    需求:
    定义一个数组,输出数组名及元素。然后给数组中的元素赋值,再次输出数组名及元素
    这里写图片描述
  • 两个数组的内存图
    需求:
    定义两个数组,分别输出数组名及元素。然后分别给数组中的元素赋值,分别再次输出数组名及元素
    这里写图片描述
  • 两个数组指向同一个地址的内存图
    需求:
    定义两个数组,先定义一个数组,赋值,输出。然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组。然后给第二个数组赋值,再次输出两个数组的名及元素
    这里写图片描述
数组的使用
  • 数组的元素访问
public void main(String[] args) {
    int[] arr = new int[3];
    // 这里打印出的是数组在堆内存中的地址值[I@3fa5ac,一般不使用,只有在判断两个数组是否相同时才使用其进行判断,如果需要获得数组中的具体数据,格式为:数组名[索引]---arr[0];这个就是获取数组中第一个值,数组中的编号也就是索引是从0开始到数组长度减1结束;
    System.out.println(arr);

}
  • 数组中常见的两个问题

A:java.lang.ArrayIndexOutOfBoundsException
数组越界异常
产生的原因:就是你访问了不存在的索引元素。
B:java.lang.NullPointerException
空指针异常
产生的原因:数组已经不指向堆内存的数据了,你还使用数组名去访问元素。

java基础知识1——数据类型
java基础知识2——运算符
java基础知识3——流程控制语句
java基础知识4——数组
java基础知识5——方法
java基础知识6——面向对象
java基础知识7——String&StringBuilder
java基础知识8——ArrayList集合
java基础知识9——IO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值