A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付剑翊 中级黑马   /  2014-9-1 17:09  /  1521 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

s1和s2不是引用数据类型么?

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

1409562517111.jpg

17 个回复

倒序浏览
void类型。。没有return回来值。。。

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

顺便楼主不会截图吗??需要用手机拍?

点评

上课的问题没听懂。。老师讲到那里,就顺便拍下来。。。  发表于 2014-9-1 19:43
嗯同意,主要是没有返回值,只是把形式参数的值改变了  发表于 2014-9-1 19:22
回复 使用道具 举报
要使用函数交换两个变量的值的话,在JAVA语言里,不使用容器或者类是做不到的。

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

a = tmp;
a = b;
b = tmp;
回复 使用道具 举报
在函数里面交换变量的话,可以找定义一个第三方变量。


楼主你能不能截图?不要用手机拍。
回复 使用道具 举报
楼主这个真的看不清
回复 使用道具 举报
看不太清楚!
回复 使用道具 举报
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:23
8#
你没有返回吧
回复 使用道具 举报
改变show方法局部变量的值,main函数中的没有操作,show方法的参数引用了两个值,你改变的是show方法的局部变量。
回复 使用道具 举报
可以参考下这里:
回复 使用道具 举报
回复 使用道具 举报
LFW 中级黑马 2014-9-2 13:09:15
12#

返回了也不行的。函数局部变量,函数结束就没作用了。
回复 使用道具 举报
复制粘贴一下多方便……或者截个图
回复 使用道具 举报
happymouse 发表于 2014-9-2 11:54
可以参考下这里:

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