之前一直感觉C++和JAVA代码之间的转换是分分钟的事情,直到今天刷题《剑指offer》时,被引用给虐了。。才知道C++虽然看起来臃肿,但是对于数据的操作是真的灵活。
之前看网上很多博客讲JAVA的参数传递分两种,实际上只有一种,即值传递。
对于基本数据类型,传递过去的是值的拷贝;而对于类对象、字符串等引用数据类型,传递过去的是地址的拷贝,即创建了一个新的引用,与原引用共同指向对象的内存;之后在函数里对参数进行赋值操作,实际上是开辟了一段新内存,然后让新引用指向这里,不改变原引用的指向。
如图:
将array[0]当做参数传入方法,方法入栈后在栈内存中给形参开辟了一个新的引用指向堆内存。如果执行param = "abc"
那么会在堆中开辟一个内容为abc的部分,然后param指向abc而不会改变array[0]的指向。方法结束后出栈,释放局部变量param,最后“abc”被回收。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。