JAVA传参的一点见解

JAVA的传参数有的时候自己感觉很是奇怪,今天特地写了几个程序验证一下,发现也没有原来自己想象中的这么难,原来JAVA传的只是引用,如果是普通数据类型的话就像C中的值传递
 
/**
 * 
 
*/

package infon.test;

/**
 * 
@author infon 2007-6-1
 
*/

public class TestArg {

    
static void modifyBean(Bean bean) {
        bean.set_arg(
11111);
    }


    
static void modifyString(String s) {
        s 
= "ssssssssss";
    }


    
static void modifySB(StringBuffer sb) {
        sb.append(
"sbsbsbsbsbsbsbsb");
    }


    
static void modifyInt(int i) {
        i 
=111111;
    }


    
static void modifyInteger(Integer integer) {
        integer 
= Integer.valueOf(1111111);
    }


    
public static void main(String[] args) {

        Bean bean 
= new Bean();
        System.out.println(
"Bean修改前 _arg的值:" + bean.get_arg());
        modifyBean(bean);
        System.out.println(
"Bean修改后 _arg的值:" + bean.get_arg());

        String s 
= "00000";
        System.out.println(
"String修改前的值:" + s);
        modifyString(s);
        System.out.println(
"String修改后的值:" + s);

        StringBuffer sb 
= new StringBuffer("000");
        System.out.println(
"StringBuffer修改前的值:" + sb.toString());
        modifySB(sb);
        System.out.println(
"StringBuffer修改后的值:" + sb.toString());

        
int i = 0;
        System.out.println(
"int修改前的值:" + i);
        modifyInt(i);
        System.out.println(
"int修改后的值:" + i);

        Integer integer 
= new Integer(0);
        System.out.println(
"Integer修改前的值:" + integer);
        modifyInteger(integer);
        System.out.println(
"Integer修改后的值:" + integer);
    }

}


class Bean {
    
private int _arg = 0;

    
public int get_arg() {
        
return _arg;
    }


    
public void set_arg(int _arg) {
        
this._arg = _arg;
    }

}


输出的结果如下:
Bean修改前 _arg的值:0
Bean修改后 _arg的值:11111
String修改前的值:00000
String修改后的值:00000
StringBuffer修改前的值:000
StringBuffer修改后的值:000sbsbsbsbsbsbsbsb
int修改前的值:0
int修改后的值:0
Integer修改前的值:0
Integer修改后的值:0
----------------------------------------------------
从上面我可以得知,在传递对象的时候,传进去的是引用地址,如Bean 与 StringBuffer,在修改时也是修改他们的内容,当然String与Integer也是一样,但String与Integer在修改的时候创建了另一个对象,而原来的s 与 integer这两个变量根本就不是指向原来的地址
= "ssssssssss";   
integer = Integer.valueOf(1111111);
都是创建了一个新的对象的!
而基本数据类型int传的应该就是值,但也有可能用Iteger这个包装类进行包装后的地址,这个无从知道
但现在基本上已经摸清楚了JAVA的传参数应该注意的地方,如我在前面做EDI项目的时候,我传进去的是一个Jdom的Element对其进行增删改处理,这显然是一个对象,不用返回Element也可以,因为其传的只是一个引用,Element虽然已经修改了,但地址没有变,引用没有变就可以了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值