fxwb2005 发表于 2014-8-5 00:37
swap方法里面交换的两个变量根本不是上面main方法里面的,你交换的只是两个参数的值而已,所以swap方法没 ...
阿磊 发表于 2014-8-5 00:58
我调用了方法,传入了参数,怎么会不是操作的这个数据呢,那别的的方法都能用吗?你在看看这个图片能说明 ...
fantacyleo 发表于 2014-8-5 01:22
对,你操作的是数据,也就是str1和str2两个变量所指向的对象。但是,你没有也不可能操作str1和str2两个变 ...
阿磊 发表于 2014-8-5 01:45
那为什么调用方法不能换位,而直接在主函数中写代码就可以换位呢?并且调用方法的时候str1和str2的值确实 ...
阿磊 发表于 2014-8-5 01:45
那为什么调用方法不能换位,而直接在主函数中写代码就可以换位呢?并且调用方法的时候str1和str2的值确实 ...
fantacyleo 发表于 2014-8-5 02:20
再打个比方吧:你这次考试得了80分,回到家你爸问你成绩。你拿出一张纸,写上80。你爸很不满意,拿起笔把 ...
阿磊 发表于 2014-8-5 08:18
那是不是每个方法都不管用了呢?方法不都是这么调用的吗?如果说因为他们是字符串的原因,那要是int型的 ...
fantacyleo 发表于 2014-8-5 01:22
对,你操作的是数据,也就是str1和str2两个变量所指向的对象。但是,你没有也不可能操作str1和str2两个变 ...
LFW 发表于 2014-8-5 09:38
我也发帖了,swap(String str1,String str2)的确换到了,但并没有将结果传回给调用者,原因是什么我不知道 ...
fantacyleo 发表于 2014-8-5 02:20
再打个比方吧:你这次考试得了80分,回到家你爸问你成绩。你拿出一张纸,写上80。你爸很不满意,拿起笔把 ...
fantacyleo 发表于 2014-8-5 09:09
跟是不是对象没关系,参数传递都是值传递。String str1的值是"abcde"的内存地址,int str1的值是3,这两 ...
阿磊 发表于 2014-8-5 09:47
感觉还是晕晕的,能不能帮忙简单的画个图助于理解理解呢?还有数组里面换位,用的也是viod无返回值的,但 ...
fantacyleo 发表于 2014-8-5 09:09
跟是不是对象没关系,参数传递都是值传递。String str1的值是"abcde"的内存地址,int str1的值是3,这两 ...
LFW 发表于 2014-8-5 09:54
那数组的互换swap又怎么实现的?又或者说,我就是希望能抽取出一个将长str2短str1子串,换成短str2长str1 ...
fantacyleo 发表于 2014-8-5 10:15
还是我打的那个比方:假定有个数组int[] a = {1,2,3} 你(a)的考卷({1,2,3})做好了交给老师批改(swap) ...
LFW 发表于 2014-8-5 10:51
能改变对象内存里边的东西,却不能改变引用所指的内存地址?例如a = {1,2,3},调用swap可以让a ={2,1,3}, ...
fantacyleo 发表于 2014-8-5 10:59
是的。还有疑问吗?
LFW 发表于 2014-8-5 11:35
我把if定义在getMaxSubString函数时,能调换的原因是?
fantacyleo 发表于 2014-8-5 10:59
是的。还有疑问吗?
fxwb2005 发表于 2014-8-5 12:18
C#里面就可以用ref将值传递变为引用传递……
怀念黑海岸 发表于 2014-8-5 12:05
可以简而概之:当我们往一个方法里面传递参数时,如果这个参数是基本数据类型包括String,那么实际上传递进 ...
阿磊 发表于 2014-8-5 17:17
这个例子的话有点了解了,但是还不全懂 呵呵,就是对于数据类型和String都是不可能改变地址值的,但是对 ...
fantacyleo 发表于 2014-8-5 11:49
原因是你只互换了getMaxSubString函数中的两个string,就像你在swap中一样能看到效果,但对getMaxSubStri ...
fantacyleo 发表于 2014-8-5 21:22
画了两张内存图:
1. main函数调用swap函数,将参数传递完毕但swap函数中的代码尚未开始执行前
阿磊 发表于 2014-8-5 22:44
哦 哦 大概有点明白了,看的很清楚,现在如果换成其他的参数也是一样的吧?那数组的换位我能这样理解吗? ...
刘小印 发表于 2014-8-5 23:34
你应该没搞懂局部变量把,而且字符串是不能被修改的,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |