二.数组模型(引用):可以形象的比喻为通过小盒子里的信息)找到真实数据存放的位置;//就是引导调用的栈中的元素找到真实存放的堆区位置(只有一份)
1.引用类型的变量: 无论引用变量保存在栈上还是堆上,背后的数据(对象)一定是在堆上
模型:
2.解析空间不同:
基本数据类型
引用数据类型
引?传递空间:同?块堆内存空间可以被不同的栈内存所指向。
3.方法传递:
3.1 无论是基本类型还是引用类型,都是简单的值传递。相当于拷贝了一份实参 到调用的函数(将实参赋给形参)。所以,形参的改变不影响实参
3.2 引用传递时,通过形参引用、修改真实对象(存放在堆中)的值,实参可以感受到变化
3.3 局部变量和参数保存在栈中://参数指的是形参
void main(){
int[] array={1,2,3,4,5};
method1();//调用完后,1,2,3,4,5
method2();//调用完后,1,2,200,4,5
}
void method1(int[] array){
array=new int[10];//引用了另一个数组,没有引用原来的主函数中的数组,
//执行完后,新引用的会被撤销,还是只留下最先引用的主函数
//通过动态方式,将array指向新的数组,不会改变
}
void method2(int[] array){
array[2]=200;//改变了引用函数的值
}
原文:https://blog.51cto.com/14234228/2400289