黑马程序员技术交流社区

标题: 为什么s1和s2没有变啊 [打印本页]

作者: 付剑翊    时间: 2014-9-1 17:09
标题: 为什么s1和s2没有变啊
s1和s2不是引用数据类型么?

1409562517111.jpg (24.23 KB, 下载次数: 20)

1409562517111.jpg

作者: 烟海    时间: 2014-9-1 17:23
void类型。。没有return回来值。。。

所以操作值的本事不变。。。。。。

顺便楼主不会截图吗??需要用手机拍?
作者: bullfrog    时间: 2014-9-1 18:03
要使用函数交换两个变量的值的话,在JAVA语言里,不使用容器或者类是做不到的。

如果不使用函数的话,倒可以用临时变量。

a = tmp;
a = b;
b = tmp;

作者: MR.Sun    时间: 2014-9-1 18:07
在函数里面交换变量的话,可以找定义一个第三方变量。


楼主你能不能截图?不要用手机拍。

作者: alexchy    时间: 2014-9-1 18:11
楼主这个真的看不清
作者: bfl625    时间: 2014-9-1 18:58
看不太清楚!
作者: 付剑翊    时间: 2014-9-1 19:44
public class StringDemo {
public static void main(String[] args) {
  String s1 = "abc";
  String s2 = "def";
  show(s1,s2);
  System.out.println(s1);
  System.out.println(s2);
}
private static void show(String s1, String s2) {
  s1 = s1 + s2;
  s2 = s2 + s2;
}
}

作者: 华谦    时间: 2014-9-2 09:18
你没有返回吧
作者: viliv715    时间: 2014-9-2 09:32
改变show方法局部变量的值,main函数中的没有操作,show方法的参数引用了两个值,你改变的是show方法的局部变量。
作者: happymouse    时间: 2014-9-2 11:54
可以参考下这里:
作者: happymouse    时间: 2014-9-2 11:56
http://bbs.itheima.com/thread-141123-1-1.html
作者: LFW    时间: 2014-9-2 13:09
华谦 发表于 2014-9-2 09:18
你没有返回吧

返回了也不行的。函数局部变量,函数结束就没作用了。
作者: king13131313    时间: 2014-9-2 13:46
复制粘贴一下多方便……或者截个图
作者: 付剑翊    时间: 2014-9-2 22:39
happymouse 发表于 2014-9-2 11:54
可以参考下这里:

你说的那个如果参数是基本数据类型我还可以理解,但是String是引用数据类型,传到函数里面的是对象的地址!如果上面是数组操作,数组元素的值是肯定会改变的,这两天看了一下String的源码,稍微理解了一下,但是也还是半蒙半懂状态,尽管String类型是引用型数据变量,但是String所指向的字符串对象被final修饰了,是不能更改的,进入show方法后,局部变量指向了s1和s2指向了新的字符串对象,不再指向实际参数传进来字符串对象,当然,随着show方法出栈,局部变量随之消失,原来的s1和s2并没有被改变
作者: MeryStyle    时间: 2014-9-2 23:02
你可以把变量s1 s2定义成全局的,你所写的代码中它们都是局部变量,离开main方法后的操作对其无效!
作者: 碎流    时间: 2014-9-2 23:07
你叫你朋友准备下,你要和他打牌了.结果他在他那边准备的好好的,结果你在自家看电视了.   你只是让show参加了运算,但是你打印的时候却没有调用他.




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