java中方法传递参数为啥可以不用基本数据类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中方法传递参数为啥可以不用基本数据类型相关的知识,希望对你有一定的参考价值。
可以传递基本类型,只是这个参数出了这个方法,这个参数的改变就消失了。比如你传了2个int值 a,b进去想要让他们交换数值,是在函数里面他们值是交换的,但是出了函数
,还是原来各自的值。
因为对于基本类型,java是把他们的值传进去了,比如你原来的a是某个元素的属性,比如是5,他只是把5这个数复制一份传过去了,这5只是个数字,并不指向a的属性,你的改动是不会影响到a的属性的
对非基本类型,你在函数里的更改可以影响外面是因为直接把那个对象传进去了,改的是那个对象 参考技术A java中的数据类型分为基本数据类型和引用数据类型,
基本数据类型和引用数据类型的区别主要在存储方式上:
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;
引用数据类型在被床架时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
例如:我有一个类MyDate,其中有属性day,mouth,year等,有构造方法(带参数);
现在为其创建一个对象MyDate d1 = new MyDate(8,8,2008);
在内存中的具体创建过程是:
1)首先在栈内存中位其d1分配一块空间;
2)然后在堆内存中为MyDate对象分配一块空间,并为其三个属性设初值0,0,0;
3)根据类MyDate中对属性的定义,为该对象的三个属性进行赋值操作;
4)调用构造方法,为三个属性赋值为8,8,2008;(注意这个时候d1与MyDate对象之间还没有建立联系)
5)将MyDate对象在堆内存中的地址,赋值给栈中的d1;通过句柄d1可以找到堆中对象的具体信息。追问
大神、特别感谢
以上是关于java中方法传递参数为啥可以不用基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章