Chinaunix首页 | 论坛 | 博客
  • 博客访问: 458538
  • 博文数量: 711
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 4200
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 14:18
文章分类

全部博文(711)

文章存档

2011年(1)

2008年(710)

我的朋友

分类:

2008-10-28 14:19:42

       上java课的时候,老师讲java所有的参数都是pass by value,以前感觉很困惑,一直感觉对象是通过引用传递的。今天测试了一些才发现其中的奥秘。 java中如何两个值?对于基本类型: view plaincopy to clipboardprint?
    public static void swap(int args[]){

          int temp=args[0];

          args[0]=args[1];

          args[1]=temp;

      }

      public static void swap(int args[]){

            int temp=args[0];

            args[0]=args[1];

            args[1]=temp;

        }对于引用类型,一般也需要这种使用数组的方法。以前一直以为 swap(Object o1,Object o2)能够实现功能,测试过之后才知道这是自己一厢情愿的想法。在swap(Object o1,Object o2)中,o1和o2只是调用时外部对象引用值的拷贝,内部对它们的修改不会改变外部的实际值。但是如果调用了引用所指向的对象的方法的话,那确确实实是会执行的。做下面的测试验证一下: view plaincopy to clipboardprint?
    public class Test{

 

        public static void modify(StringBuffer buffer){

            buffer.append("world");

            buffer=new StringBuffer("no effect!");

        }

        public static void main(String args[]){

            StringBuffer stringBuffer=new StringBuffer("hello ");

            System.out.println(stringBuffer);

            modify(stringBuffer);

            System.out.println(stringBuffer);

        }

    }

【责编:landy】

--------------------next---------------------

阅读(220) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~