美文网首页
数据存储之java内存空间堆栈

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

作者: 测试探索 | 来源:发表于2024-08-21 10:33 被阅读0次

    一:数据类型

    • 基本数据类型 byte,short, int,long, float,doble,boolean,char
    • 引用数据类型,即除了基本的变量类型之外的所有类型

    二: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中)

    • 一个对象在内存中会请求一块空间来保存数据,访问对象的时候不会直接是访问对象在内存中的数据,而是通过引用去访问
    • 引用:也是一种数据类型,保存的是内存的地址,引用是存储在 stack栈空间里面
    • 不同的引用可以指向同一个对象,一个对象可以有多个引用
      代码示例:
    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]
    
    

    相关文章

      网友评论

          本文标题:数据存储之java内存空间堆栈

          本文链接:https://www.haomeiwen.com/subject/wzmbkjtx.html