您的位置:首页 > 其它

引用类型和值类型作为参数的值是否会传递的浅解

2012-09-15 11:56 274 查看
一直对这个问题有点模糊,今天看了下api,又在网上看了下别人的贴子,在结合自己写的几个测试类,总算是对这个问题有个浅显易懂的认识了.

String、Integer、Double等等虽然都是引用类型,但是和一般引用类型不一样,它们都是immutable,也就是说不可改变,也可以说他们没有set方法。

当这些特殊的引用类型作为方法参数时(9行),参数在方法中被改变时(3行),不是在原先被被分配的内存区域中作改变,而是会另外在内存的堆栈中开辟一块新的区域存放改变的值。所以这些类型虽然是引用类型,虽然在方法中被修改,但是变量仍然指向的未被方法改变的内存区域。

public class Demo305 {
void change(String str){
str+="change";
}

public static void main(String[] args) {
String str="test";
Demo305 test=new Demo305();
test.change(str);
System.out.println(str);
}
}


输出结果
test

同理,String[],Map、Set等集合中的String值也不能被转递
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐