深入分析java值传递和引用传递?
2011-08-24 00:09
211 查看
public class Role {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
/*
* 分析值对象和引用对象?
*/
public class ValueObjectAndReferenceObject {
public static int a=0;
public static String str="bb";
public static void main(String[] args) {
ValueObjectAndReferenceObject v=new ValueObjectAndReferenceObject();
System.out.println("str调用前"+str);
v.str(str);
System.out.println("str调用调用后"+str);
System.out.println("a调用前"+str);
v.valueObject(a);
System.out.println("a调用后"+str);
Role role=new Role();
System.out.println("role调用前"+role.getId());
v.referenceObject1(role);
System.out.println("role调用后"+role.getId());
System.out.println("role调用前"+role.getId());
v.referenceObject2(role);
System.out.println("role调用后"+role.getId());
System.out.println("role调用前"+role.getId());
v.referenceObject3(role);
System.out.println("role调用后"+role.getId());
}
public void str(String str){
str="ccccc";
}
/*
* 八大基础类型都是传递滴是值本身
*/
public void valueObject(int b){
b++;
}
/*
* 引用类型传递的是 引用对象的引用地址值
*/
public void referenceObject1(Role r){
r.setId("1111111");
}
public void referenceObject2(Role r){
Role re=r;//把专递过来滴引用值,赋值给一个新申明滴对象
re.setId("2222222");
}
public void referenceObject3(Role r){
r=new Role();//r指向了一个新对象
r.setId("3333333");
}
}
执行后输出结果:
str调用前bb
str调用调用后bb
a调用前bb
a调用后bb
role调用前null
role调用后1111111
role调用前1111111
role调用后2222222
role调用前2222222
role调用后2222222
通过上面滴输出可以看出,基础类型是值传递这一点是非常肯定的,而关于引用类型滴传递,则有不少争论,有人说是引用传递,也有人说是值传递,不过不管是说值传递者还是引用传递者都有一个共同观点,传递给方法参数滴是这个对象滴地址,个人觉得他们只是所占角度不一而已,因此通过我的分析可以总结成:
1、引用传递-------说是引用传递的,你可以把他理解为,相对于这个对象的实际值来说确实如此,因为传递的是这个对象实际值的一个引用,因此叫引用传递
2、值传递-------值传递的说法者,他们认为虽然传递的是一个这个对象的引用值,但是这个引用本身也是一个值,因此称为值传递!
相关文章推荐
- JAVA随笔篇二(深入分析JAVA简单类型、String和对象的值传递和引用传递)
- Android中的引用传递和值传递分析(Java)
- 关于java的引用、C++的指针、引用的深入分析
- Java值传递和引用传递及形参实参的分析(实例对比c++)
- JDK8中值传递和引用传递分析(Java中堆栈的区别)
- java参数(值,引用)传递分析
- 深入理解Java的方法调用一(值传递和引用传递)
- Java学习笔记[深入引用传递] 2010-8-22
- 通过2个实例分析java参数传递时按值传递还是按引用传递
- 深入理解--Java按值传递和按引用传递
- Java值传递和引用传递基础分析
- JAVA形参值传递,引用传递分析。
- Java面向对象基础--引用传递分析
- Java参数传递机制分析:值与引用
- java值传递和引用传递分析
- java引用传递值传递的"深入"解析与c++中的值传递
- java中的值传递和引用传递的区别分析
- 如何区分Java中的值传递和引用传递
- YY之Java中的值传递和引用传递
- java值传递还是引用传递