数据存储之java内存空间堆栈

2024-08-21  本文已影响0人  测试探索

一:数据类型

二:java在内存中堆、栈两块存储空间

image.png

2.1 基本数据类型只有一块存储空间(分配在stack中)

package chapter3;

public class MemoryDemo {
    public static void main(String[] args) {
        int i = 1;
        System.out.println("第一个i:" + i);
        int a = i;
        System.out.println("第二个i:" + i);
        System.out.println("第二个a:" + a);

        i = 2;
        System.out.println("第三个a:" + a);
        System.out.println("第三个i:" + i);

    }
}
输出结果:
第一个i:1
第二个i:1
第二个a:1
第三个a:1
第三个i:2

2.2 引用类型有两块存储空间(一块在stack中,一块在heap中)

package chapter3;

public class MemoryDemo {
    public static void main(String[] args) {
        String aa = "这是aa";
        String bb = "这是bb";
        System.out.println("第一个aa:" + aa);
        System.out.println("第一个bb:" + bb);

        bb = aa;
        System.out.println("第二个aa:" + aa);
        System.out.println("第二个bb:" + bb);

        aa = "重新赋值,查看结果";
        System.out.println("第三个aa:" + aa);
        System.out.println("第三个bb:" + bb);

    }
}

运行结果:
第一个aa:这是aa
第一个bb:这是bb
第二个aa:这是aa
第二个bb:这是aa
第三个aa:重新赋值,查看结果
第三个bb:这是aa

三:数组拷贝

代码示例

package chapter3;

import java.util.Arrays;

public class MemoryDemo {
    public static void main(String[] args) {
        int [] a = {1,2,3};
        int [] b = a;
        System.out.println("a的地址是:"+a);
        System.out.println("b的地址是:"+b);
        
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));
        b[0] = 0;
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));

    }
}
输出结果:
a的地址是:[I@a09ee92
b的地址是:[I@a09ee92
[1, 2, 3]
[1, 2, 3]
[0, 2, 3]
[0, 2, 3]

上一篇下一篇

猜你喜欢

热点阅读