java装箱内存分配_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]);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值