黑马程序员技术交流社区

标题: 刚入门的一个问题 [打印本页]

作者: べ戀¢豬そ☆    时间: 2012-7-21 10:44
标题: 刚入门的一个问题
在java中,不用第三方变量,对两个整数的值进行转换,为什么不可以直接System.out.println("n="+m+",m="+n);呢?我试过,得出的结果就是将n和m的数值转换了。只是数值的转换,不是地址的转换,况且在这里也没有用到第三方变量的。
作者: 包晗    时间: 2012-7-21 10:48
本帖最后由 包晗 于 2012-7-21 10:55 编辑

- -  
这样打也行
但是 代码要有可读性
如果别人写的代码.
你看了半天会摸不着头脑的

编写代码的时 ,起名字要形象一点  
比如获取名字写
getName
设置某某 用
set

this.name=name
等等
接触多了 会形成一定的模式

作者: 丁二跃    时间: 2012-7-21 10:50
你这是…………自欺欺人嘛

拿着m 非说是 n  ,这不是交换:(
作者: 王贵朝    时间: 2012-7-21 10:51
你的理解很传统,在输出语句确实可以这样输出,但是如果是在做循环呢?
作者: 王龙彪    时间: 2012-7-21 10:55
...m 和 n的值都没变啊
作者: 高俊杰    时间: 2012-7-21 11:17
不用第三方变量对两个整数的值进行互换:
第一种方式:
              a=a+b;
              b=a-b;
              a=a-b;
第二种方式:
              a=a^b;
              b=a^b;
              a=a^b;
你这种做法,显示上没问题,但是实际上两个数的数值并没有变。
作者: 柳雷    时间: 2012-7-21 11:33
这只是显示没问题,具体的数值没有变,这么做没有什么意义。
作者: 李菁    时间: 2012-7-21 11:48
你这样进行转换只是值传递,只改变值,而没有进行引用传递,所以内存地址没有改变
作者: 周玉龙    时间: 2012-7-21 12:32
System.out.println("n="+m+",m="+n);这样写是有问题的.这里m,n的值根本没有改变."n="这只是个字符串,你将一个数值付给了一个字符串打印出来的是数值的字符串表现形式.
如果我这样写System.out.println("a="+m+",b="+n);你能理解吗..双引号里面的字符串只是你人为的定义成了变量名,这样是不行的.

作者: 谭威    时间: 2012-7-21 17:32
你这是打印给人看的。  真正项目中能这么干嘛
作者: 郑彬    时间: 2012-7-21 17:49
你这个显示是字符串,并不是什么具体的值,没有意义的,因为你人为的将具体的变量值与字符串按照某组排序重新组成字符串在计算机屏幕上打印出来,这只是一种你人为的字符排序。计算机内存中的m与n的实际值并没有因为你的打印而互换了。至于地址更不可能呼唤,因为你只知道m与n的值,并不知道m,n的地址在哪里。怎么可能互换呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2