String是引用数据类型 但是是值传递 怎么理解?

No_what_cant 2013-07-20 11:38:54
String是引用数据类型 但是是值传递 怎么理解?

引用数据类型不是在方法中修改的值 更改吗?

求大神详解一下  举例子啊
...全文
755 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
abc3685029 2015-04-01
  • 打赏
  • 举报
回复
2L这样误导真的好吗
惑惑 2013-07-21
  • 打赏
  • 举报
回复
java的所有参数传递都是值传递,不管基本类型还是引用类型 举个最简单的例子:

public class Test {
	public static void swap (String str1, String str2) {
		String tmp = str1;
		str1 = str2;
		str2 = tmp;
		System.out.println("str1:" + str1 + " - " + "str2:" + str2);
	}
	
	public static void main(String[] args) {
		String strA = "a";
		String strB = "b";
		swap(strA, strB);
		System.out.println("strA:" + strA + " - " + "strB:" + strB);
	}
}
这个demo运行结果是: str1:b - str2:a strA:a - strB:b 也就是swap方法没有达到交换的目的,为什么呢? 因为传递的时候是声明了一个str1,指向了strA所指向的对象,你理解成是把strA所保存的对象地址传递给了str1就行。 c++中有两种传参方式,值传递和引用传递,其引用传递能达到交换的目的,而java不行,java只有值传递,基本类型的值就是其本身,引用类型的值是对象地址。 可能讲解的不是很清楚,你可以看看《java核心技术 卷Ⅰ》中第四章第5节“方法参数”的讲解,专门讲这个的
huntor 2013-07-20
  • 打赏
  • 举报
回复
问题在于String是一个不变的值类型。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧