java值传递与C语言的指针变量

1.java中的形参值传递

 public static void main(String[] args) {
        Integer a=1,b=3;
        swap(a,b);//将a,b对象的地址值传递给形参,方法中形参交换地址值
        System.err.println("a="+a+",b="+b);

    }
  static void swap(Integer x, Integer y){//形参,存在栈中,方法结束即弹栈
        Integer temp=0;    
        temp=x;
        x=y;
        y=temp;
    }

main方法最后的输出还是a=1,b=3

2.c语言可以通过引用或者指针来实现两个整数的交换,实质上是通过地址传递来实现两个整数的交换的。

#include<stdio.h>
void swap1(int a,int b)
{
    int c;
    c=a;
    a=b;
    b=c;
}
void swap2(int*p1,int *p2)
{
    int c;
    if(p1&&p2)            
    {
        c=*p1;
        *p1=*p2;
        *p2=c;
    }
}
void main(int argc,char**argv)
{
    int a=1;
    int b=2;
    swap1(a,b);
    printf("a=%d,b=%d\n",a,b);
    swap2(&a,&b);//&取a,b的地址值,并传入形参,方法中形参交换地址的空间内容,*获取内存内容
    printf("a=%d,b=%d\n",a,b);

swap1输出 ,a=1,b=2
swap2输出,a=2,b=1交换成功

3.那么java中如何实现交换?可以通过引用(地址)存的对象set方法或者构造器

  public static void main(String[] args) {
        User u1 = new User(1, "akil");
        User u2 = new User(3, "mmm");
        swap2(u1,u2);
        System.err.println("u1="+u1.id+",u2="+u2.id);
    }
 static void swap2(User x, User y){
       int t=x.getId();
        x.setId(y.getId());
        y.setId(t);
    }


4.总结:C语言的指针*操作就是用于操作内存空间的,同样java提供的getter/setter以及构造器也是操作内存空间的;
C语言的&操作符是获取地址,赋值给指针变量
java中引用类型变量=C语言指针变量,都是指向某个内存地址;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值