问一个关于Java方法中参数的传递问题

方法的参数传递分为值传递和引用传递。可是为什么String对象作为参数传递的时候,结果是和值传递一样的呢?而不是引用传递packageend.thinkinjava.ch... 方法的参数传递分为值传递和引用传递。可是为什么String对象作为参数传递的时候,结果是和值传递一样的呢?而不是引用传递

package end.thinkinjava.chart02;
/**
难道String类型不是引用变量吗?
*/
//值作为方法参数与引用作为方法参数
public class Demo01 {

/**
* @param args
*/
public static void main(String[] args) {
//值传递与引用传递
String s = new String("abc");
Person p = new Person();
p.setName("NewName");
p.setAge(15);
System.out.println(p);
System.out.println(s);
System.out.println("-------------------------");
change(s);
change(p);
System.out.println(p);//变化
System.out.println(s);//不变
}

private static void change(Person p) {
p.setName("NewName_Old");
p.setAge(20);
}

private static void change(String s) {
s = new String("abc_New");
}

}

class Person{
private String name;
private int age;

/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Name:"+this.getName()+" -- "+"Age:"+this.getAge();
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
展开
 我来答
匿名用户
2014-07-25
展开全部
被String引用的那个对象不可以被修改,但这个引用可以指向别的对象——这是String的基本属性

或者奇葩一点说,Java中,引用也是一种值。所以搜索一下也能看到这样的说法:“java中只有值传递,没有引用传递”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
画蛊入了髓7f
2014-07-25 · TA获得超过179个赞
知道小有建树答主
回答量:261
采纳率:0%
帮助的人:206万
展开全部
1)方法的参数可以看做是方法内的局部变量
2)change(s)方法内操作的是引用,change(p)方法内操作的是对象,所以改变了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
野文菜A
2014-07-25 · TA获得超过830个赞
知道小有建树答主
回答量:645
采纳率:100%
帮助的人:519万
展开全部
private static void change(String str)

String s = new String("abc");

change(s);

change(str)相当于:
String str=s;
str=new String("abc_New");

实际传递的是引用的副本
People传递的是引用,引用和引用的副本指的是同一个对象。
而String的副本设为一个新的字符串,原字符串不变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式