• Java内存分配


    Java内存分配
    程序运行时,内存可以分成四块
    一块用来装代码,就是编译后的内容
    一块用来装静态的内容static
    一块是,stack,用来装变量的,就是我们声明的各种类型的变量,也就是赋值号左边的内容
    一块是,heap,装的是new出来的内容
    基本数据类型:变量和值存储在栈中
    引用数据类型:变量是存储在栈中,真正的值是存储在堆中,也就是通过new关键字创建出的内容都存储在堆中
    栈中变量存储的是堆中内存的地址
    Java参数
    java形参看做是方法的局部变量,每次方法被调用时,都会针对形参在内存中申请空间,方法执行结束后,该内存空间被回收
    不管是基本数据类型作为参数还是引用数据类型作为参数,都是将栈中变量所存储的内容复制一份,传递给方法中的形参
    int num= 1;
    object.show(num);//

    Student s = new Student();
    object.show(s); //将s中存储的地址传递给方法中的形参,s和方法中的形参指向同一个堆内存
    如果在方法内改变基本数据类型的值,当方法结束后,不会影响传参之前的变量值
    如果改变引用数据类型的属性值,当方法结束后,会影响传参之前的对象的属性值

    public class Test02 {
    public int[] show(int[] nums){
    nums[1] =2;

    nums = new int[2]; //new 重新申请堆内存空间,方法结束被回收
    nums[0]=3;
    nums[1]=4;

    return nums;
    }

    public static void main(String[] args) {
    Test02 test02 =new Test02();
    int[] nums =new int[2];
    nums[0] = 1;
    int[] nums1=test02.show(nums);
    System.out.println(nums[1]);
    System.out.println(nums1[1]);
    }

    }

  • 相关阅读:
    android 振动
    linux实用命令-查看文件夹的大小
    无显示屏的开发板抓屏
    传感器Sensor的使用-距离感应(听筒模式)
    4.4原生应用获取通话状态
    git服务器的使用
    (转)浅谈ANR及log分析ANR
    ubuntu下从软件中心安装软件时的软件缓存目录
    mysql————Innodb的可重复读的情况下如何避免幻读?
    MyISAM和Innodb的区别
  • 原文地址:https://www.cnblogs.com/longmo666/p/13555296.html
Copyright © 2020-2023  润新知