JAVA入门-参数

参数有哪几类?

形式参数

用来接收调用该方法时传递的参数。
只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间。
因此仅仅在方法内有效。
举例

public void test(int a,int b){
int c=a;
a=b;
b=c;
system.out.println("a:"+a+"b:"+b+"c:"+c)
}

其中int a int b 就是形参,一旦方法结束就会在栈空间中被销毁。

实际参数

传递给被调用方法的值,预先创建并赋予确定值。
举例

test(12;

其中1,2就是实参。

传<值>调用

传值调用中传递的参数为基本数据类型。
将参数视为形参
举例

 1 public class Test{
 2     public static void main(String[] args) {
 3         int i = 10;
 4         int j = 5;
 5         Test t = new Test();
 6         System.out.println("i:" + i + " j:" + j);
 7         t.test(i, j);
 8         System.out.println("i:" + i + " j:" + j);
 9 
10 
11     }
12 
13     public void test(int a, int b) {
14         int c= a;
15         a = b;
16         b = c;
17         System.out.println("a:" + a + " b:" + b);
18     }
19 
20 
21 }

大家会很困惑,啥玩意?
之前不是刚说传递给被调用方法的参数是实参吗?
在第七行我们调用test方法时传递了i,j
并且在方法内进行了值交换,但最终结果却是初始化值。
-----------难点来了,也就是说----------
因为在方法运行结束时,自动销毁栈空间内的形参。
也就是说方法中的值改变只作用到了形参,而不影响传递的实参。

传<引用>调用

如果传递的参数是引用数据类型。
参数视为实参
举例

10 public class Test {
11     public static void main(String[] args) {
12         Test t = new Test();
13         Data data = new Data();
14         System.out.println("data.i:"+data.i+" data.j:"+data.j);
15         //调用
16         t.test(data);
17         System.out.println("data.i:"+data.i+" data.j:"+data.j);
18 
19     }
20 
21     public void test(Data data) {
22         int c= data.i;
23         data.i = data.j;
24         data.j = c;
25     }
26 }
27 
28 class Data {
29     int i = 10;
30     int j = 5;
31 }

同上,如果传递的参数是引用数据类型,参数视为实参。在调用的过程中,将实参的地址传递给了形参,形参上的改变都发生在实参上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值