
java中,向方法传递对象引用变量是按值传递,其中有修改变量和修改对象的问题,
请问修改对象和修改变量的区别是什么?比如下面这个代码voidbar(){Foof=newFoo();doStuff(f);}voiddoStuff(Foog){g.set...
请问修改对象和修改变量的区别是什么?
比如下面这个代码
void bar(){
Foo f = new Foo();
doStuff (f);
}
void doStuff (Foo g){
g.setName ("Boo");
g = new Foo();
}
为什么会对g赋值,而不会重新对f赋值呢? 展开
比如下面这个代码
void bar(){
Foo f = new Foo();
doStuff (f);
}
void doStuff (Foo g){
g.setName ("Boo");
g = new Foo();
}
为什么会对g赋值,而不会重新对f赋值呢? 展开
1个回答
展开全部
传值传引用都不够准确,可以理解成传引用变量的副本值。引用变量分为字面值引用变量(即基本数据类型引用变量)和对象引用变量 。 详情需要了解数据类型使用机制和堆栈的概念:http://www.cnblogs.com/alexlo/archive/2013/02/21/2920209.html
对象引用变量:即普通java对象的引用变量 ,如 String a = "abc" , a就是对象引用变量。java 是不能直接操作对象的,只能通过对“对象引用的操作”来操作对象。而对象的引用的表示就是对象变量。可以多个对象引用变量指向同一个对象。
字面值引用变量:即普通数据类型的引用变量 ,如 int b = 1 , b就是字面值引用变量。可以有多个字面值引用变量指向同一字面值,但其中一个引用修改字面值,不会影响另一个引用字面值,这点要与对象引用区别开。
对象引用变量:即普通java对象的引用变量 ,如 String a = "abc" , a就是对象引用变量。java 是不能直接操作对象的,只能通过对“对象引用的操作”来操作对象。而对象的引用的表示就是对象变量。可以多个对象引用变量指向同一个对象。
字面值引用变量:即普通数据类型的引用变量 ,如 int b = 1 , b就是字面值引用变量。可以有多个字面值引用变量指向同一字面值,但其中一个引用修改字面值,不会影响另一个引用字面值,这点要与对象引用区别开。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |