第二天Java基础下午(数组/内存图)

本文详细介绍了Java中数组的创建与默认值,深入探讨了Java内存的五个部分及其功能,包括栈、堆、方法区域、本地方法栈和寄存器。并通过实例展示了两个引用指向同一数组时的操作效果,强调了数组长度的不可变性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建数组各种类型默认的值

1)整数数组(0)
2)浮点数组(0.0)
3)字符数组(\u0000)不可见;不是空
4)布尔类型(false)
5)引用类型(null)

2.Java内存5个部分

1.栈(Stack):存放的都是方法当中的局部变量。方法一定再栈当中运行,方法的参数和内部的变量都是局部变量,一旦超出作用域立即从栈中消失。
2.堆(Heap):new出来的东西都是在堆中,堆中的数据都是有一个16进制的地址值。且数据都有默认值:
1)整数数组(0)
2)浮点数组(0.0)
3)字符数组(\u0000)不可见;不是空
4)布尔类型(false)
5)引用类型(null)
3.方法区域(Method Area)储存.class相关信息,包括方法信息。
4.本地方法栈:与操作系统相关
5.寄存器:与cpu相关

3.一个数组在内存中的图

数组内存

4.当两个引用指向同一个数组时,两个引用的操作都生效

public static void main(String[] args) {
       int a[] = new int[3];
       a[1] = 1;
       a[2] = 2;
       System.out.println(a[1]+":"+a[2]);
        System.out.println("============");
       int b[] = a;//这句话说明a[]b[]的栈内存中地址是相同的
       b[1] = 10;
       b[2] = 20;//其中b[]对数组的操作,同样影响到a[]
       System.out.println(b[1]+":"+b[2]);
        System.out.println("============");
        System.out.println(a[1]+":"+a[2]);
    }

结果为

1:2
============
10:20
============
10:20

4.数组中需要注意的事情

1)数组的长度是不可变的
2)小练习数组反转

//1.需要指针分别从数组两端往中间走min、max
        //2.当min==max时,或min>max时不再进行交换
        //3.对称的值进行交换
        int temp = 0;
        for (int min = 0,max = a.length-1;min<max;min++,max--){
            temp = a[min];
            a[min] = a[max];
            a[max] = temp;
        }

5.一个对象的内存图

在这里插入图片描述

6.两个对象的内存图

在这里插入图片描述

7.两个引用指向一个对象的内存

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值