zoukankan      html  css  js  c++  java
  • java18

    所有对象和数组都是在堆里创建的
    1.数组在堆中的存储方式。

    int[ ] ages      =         new int[ ]{10,20,30}; 
    //声明数组ages         //在堆中开辟了一块空间并将数组初始化  
    //同时将新开辟空间的内存地址赋值给了ages)
    System.out.println(ages);
    【[I@15db9742】//输出内存地址
    

    java的jvm中有自动清除垃圾(GC)的功能。
    当内存资源紧张时,无需手动控制内存的的释放,它会自动清除没用的对象
    2.对象在堆中的存储方式。
    在栈中创建的成员变量没有初始值
    堆中存放了对象的地址,并且存放的每个基本数据类型都有初始值
    在执行指令时会根据栈中的地址去堆中寻找

    对象1
    Person zly = new Person();
    zly.name= "赵丽颖";
    zly.age = 18;
    对象2
    Person rh = new Person();
    rh.name = "如花";
    System.out.println(rh.name);
    【如花】
    
    栈:Person zly = fdsfdsf(内存地址)
    堆:Person 
       地址值:fdsfdsf
     name       赵丽颖
     age          18
    
    zly = rh;
    System.out.println(zly.name);
    【如花】
    zly = null;
    【java.lang.NullPointerException】  空指针异常(没有地址)
    

    凡是使用new关键字创建出来的类型都是引用数据类型

    引用数据类型:类,数组,枚举,注解,接口
    基本数据类型的存储空间只在栈中
    引用数据类型的存储空间在栈和堆中。

    基本数据类型的值传递

    	static void a(int x) {
    		System.out.println("1="+x);
    		x = 100;
    		System.out.println("2="+x);
    	}
    	public static void main(String[] args) {
    		int x = 20;
    		a(x);
    		System.out.println("3="+x);
    	}
    	【1=20
                2=100
                3=20
                】
    
    

    分析:main方法先入栈,a方法后入栈
    先x被赋初值:x =20
    接着调用a方法
    所以 1 = 20,
    再一次x赋值,所以2 = 100
    接着a方法出栈
    在打印3 = 20;

    引用数据类型的地址传递(数组的第一个元素与第二个元素调换位置)

    //分析:将第0个元素位置空出来,
    把第1个元素放进去
    将第0个元素放在第1个元素位置处
    //调用方法前后输出对比

  • 相关阅读:
    【Codeforces 933A】A Twisty Movement
    【Codeforces 996B】World Cup
    【Codeforces 469B】Chat Online
    鼠标点击后的CSS3跑马灯效果
    CSS的相对定位和绝对定位
    CSS3制作的一款按钮特效
    单元测试小结
    JS对输入判断变化屏蔽中文输入法输入时连续触发事件的方法
    jquery的load方法
    MVC视图特性
  • 原文地址:https://www.cnblogs.com/-zero/p/10332155.html
Copyright © 2011-2022 走看看