Java数组的内存分析及三种初始化

Java内存分析

Java内存

1. 堆

  • 存放 new 的对象和数组
  • 可以被所有的线程共享,不会存放别的对象引用

2. 栈

  • 存放基本变量类型(会包含基本类型的具体数值
  • 引用对象的变量(会存放这个引用在堆里面的具体地址

在这里插入图片描述

3. 方法区

  • 可以被所有的线程共享
  • 包含了所有的 class 和 static 变量

数组的三种初始化

  • 静态初始化

    int[] a = {1,2,3};
    Man[] men = {new Man(1,1),new Man(2,2)}; //自定义的类数组初始化
    
  • 动态初始化

    int[] a = new int[2];
    a[0] = 1;
    a[1] = 2;
    
  • 默认初始化

    ​ 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中每个元素也被按照实例变量同样的方式被隐式初始化。

package Java数组;

public class Demo02 {
    public static void main(String[] args) {
        //静态初始化
        int[] a = {1,2,3};
        System.out.println(a[0]);
        //动态初始化
        int[] b = new int[2];
        b[0] = 4;
        System.out.println(b[0]);
        //默认初始化
        int[] c = new int[2];
        System.out.println(c[0]);
    }
}
输出结果:
1
4
0

数组的四个基本特点

  • 长度是确定的,数组一旦被创建,它的大小就是不可以改变的
  • 其元素必须是相同类型,不允许出现混合类型
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组变量属于引用类型,数组也可以看出是对象,数组中的每个元素相当于该对象的成员变量

​ 数组本身就是对象,Java 中对象是在堆中的,因此数组无论保持原始类型还是其它对象类型,数组对象本身是在堆中的

数组边界

下标的合法区间:[0,length-1],如果越界就会报错:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值