Java函数参数


 

程序设计语言中参数传递:1、值调用表示方法接收的是调用者的值。2、引用调用表示方法接收的是调用者提供的变量地址。

       Java语言总是采用值调用。也就是说,函数得到的是参数值的一个拷贝,函数不能修改传递给它的任何参数变量的内容。请看下面的示例:

class Demo_20
{
	public static void main(String [] arge)
	{
		int a = 2;
		System.out.println(a);//未调用前输出
		Double(a);//调用Double函数
		System.out.println(a);//调用后输出
	}
	public static void Double(int  b)
	{
		b = b * 2;
	}
}

运行后结果为:2

                            2

首先看一下执行过程:

1、  b被初始化为a值的一个拷贝,

2、  b被乘以2后等于4,但a仍然是2

3、  这个函数结束后,参数变量b不再被使用。

大家已经看到,一个方法不能修改一个基本数据类型的参数。但是对象应用就不同了,

请看示例:

class Change
{
	private int a;
    public Change(int a)
	{
		this.a=a;
	}
	public int getA()//返回a的值
	{
		return a;
	}
	public void Two(int b)//将a乘以b然后赋给a
	{
		a = a * b;
	}
}
class Demo_21
{
	public static void main(String [] arge)
	{
		Change e = new Change(4);//定义一个Change对象
		System.out.println(e.getA());//输出
		Turn(e);//调用Turn函数
		System.out.println(e.getA());
	}
	public static void Turn(Change b)
	{
		b.Two(2);//将类里的变量a乘以2
	}
}

运行结果为:4

                        8

具体执行过程为:
1b初始化为e值的一个拷贝,这里是一个对象的引用。

2Two函数应用到这个对象的引用。be同时引用那个Change对象的变量a被乘以了2.

3、函数结束后,参数变量不再使用。但是e仍然引用那个被改变的对象。

有些人会认为Java语言对对象的采用的是引用调用,其实这是不对的。

举例如下:

class Change
{
	private int a;
	public int getA()//返回a的值
	{
		return a;
	}
	public Change(int a)
	{
		this.a=a;
	}
	public void Two(int b)
	{
		a = a * b;
	}
}
class Demo_10
{
	public static void main(String [] arge)
	{
		Change a = new Change(4);
		Change b =new Change(8);
		System.out.println("a:"+a.getA()+",b:"+b.getA());//输出a和b
		Swap(a,b);//调用Swap函数交换
		System.out.println("a:"+a.getA()+",b:"+b.getA());//调用Swap函数后输出a和b
	}
	public static void Swap(Change e,Change f)
	{
		Change temp;
		temp = e;
		e = f;
		f = temp;
	}

}


 

运行结果:a4b8

                    a4b8

这个过程说明:Java语言对对象不是引用调用,实际上,对象引用进行的是值传递。

下面总结一下在Java程序设计语言中,函数参数的使用情况:

1、 一个函数不能修改一个基本数据类型的参数。

2、 一个函数可以改变一个对象参数的状态。

3、 一个函数不能实现让对象参数引用一个新的对象。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值