当前位置: 代码迷 >> Java相关 >> Java中传递的到底是引用还是数值的问题?-->千里冰封转移
  详细解决方案

Java中传递的到底是引用还是数值的问题?-->千里冰封转移

热度:75   发布时间:2007-03-18 10:46:01.0
Java中传递的到底是引用还是数值的问题?-->千里冰封转移
看了很多书,老师讲课的时候也都强调了JAVA中除了基本数据类型之外其他的都传递的是引用!
在<<JAVA 编程思想>>一书中也是说传递的引用,可是我总觉得不对,不因该是传递的引用!
求教高手一个小程序让我理解下好不?
搜索更多相关的解决方案: Java  JAVA  千里冰封  数值  类型  

----------------解决方案--------------------------------------------------------
发到J2SE比较好
----------------解决方案--------------------------------------------------------
这是J2SE的问题吗?
所谓的J2SE,J2EE,J2ME都只不过是JAVA的三个版本而已,可你别忘了在这三个平台上进行开发所使用的语言还是JAVA,我不觉得在J2EE里面发这帖子有什么问题!你能帮我解决下吗?

----------------解决方案--------------------------------------------------------
JAVA里面都是传值,只不过当是对象的时候,传的是引用的值
----------------解决方案--------------------------------------------------------
回复:(千里冰封)JAVA里面都是传值,只不过当是对象的...
2楼的,你不觉得你说的话有问题吗?
这跟什么J2SE有关系吗?所谓的J2EE,J2SE,J2ME只不过是JAVA的三个版本,三个不同的平台而已!
而这三个平台所使用的开发语言都是JAVA语言,我这篇帖子发在J2EE里面有什么问题?

----------------解决方案--------------------------------------------------------

我就是说的对象的问题啊!
对象之间传递的是引用吗???
你写段代码出来让我看看到底传递的是什么??


----------------解决方案--------------------------------------------------------
以下是引用hardes在2007-3-18 11:02:31的发言:

我就是说的对象的问题啊!
对象之间传递的是引用吗???
你写段代码出来让我看看到底传递的是什么??

传递的是引用的考贝
----------------解决方案--------------------------------------------------------
我还是不能理解!
书上说的是引用,我都晕了.
现在你又说传递的是引用的拷贝??
怎么区别??


----------------解决方案--------------------------------------------------------

举个很简单的例子吧

我定义一个类叫Person,

[CODE]class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String s){
name=s;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public String toString(){
return "名字:"+name+",年龄:"+age;
}
}
public class Test{
public static void main(String[] args){
Person p1=new Person("王二小",15);
Person p2=new Person("刘胡兰",20);
changeName(p1);
System.out.println(p1);
changePerson(p2);
System.out.println(p2);

}
private static void changeName(Person p){
p.setName("新的名字");
System.out.println(p);

}
private static void changePerson(Person p){
p=new Person("全新",25);
System.out.println(p);
}
}[/CODE]

好好体会一下输出就知道了


----------------解决方案--------------------------------------------------------
你会发现changePerson改变的只是一个拷贝的引用而已,当出了这个方法以后,p2还是原来那个p2

----------------解决方案--------------------------------------------------------
  相关解决方案