问题描述
话说C语言中每次写函数是都会告诉自己不要返回局部变量,而现在在学Java,发现写方法时返回局部变量却没有C中的问题,这是怎么回事,C中是因为调用结束后局部变量消失,对应地址里的内容不确定,而Java中又是怎么样的呢??
解决方案
解决方案二:
c里如果返回的是副本,而不是引用,那么局部变量不会消失,不是吗?在java里,由于是进行引用传递,他会在每一次对象赋值的时候进行引用计数,如果计数不为0,就不会回收局部变量,那么也就不会造成消失的问题
解决方案三:
引用1楼kifile的回复:
c里如果返回的是副本,而不是引用,那么局部变量不会消失,不是吗?在java里,由于是进行引用传递,他会在每一次对象赋值的时候进行引用计数,如果计数不为0,就不会回收局部变量,那么也就不会造成消失的问题
话说C中没有引用的用法吧,另外还有Java中按引用传值不是只有引用类型才可以吗?基本类型不是按值传递吗?还是我记错了
解决方案四:
额,好吧,我记混了,c++才有引用的基本类型是按值传递,相当于c++里的复制传递,对于除了String的类对象而言,平时传递的都是引用
解决方案五:
Java中所有东西都是引用,所有参数传递都是按值,这里面说的传值是指复制那个符号(这个符号代表那个对象本身,即使那个对象指一个基本类型),不是说复制那个值。这更像C++的引用而不是C的指针。
时间: 2024-10-11 17:28:18