方法参数

* 参数传递分为:
* 
    * 按值调用:方法接收的是调用者提供的值。
    * 按引用调用:方法接收的是调用者提供的变量地址。

* Java采用的总是按值调用。也就是说,方法得到的是所有参数值的拷贝,特别的,方法不能修改传递给它的任何参数变量的值。因为在方法结束之后,拷贝不再使用,被放弃。改变拷贝的值不能改变原始参数变量的值。
* 方法参数有两种类型:
* 
    * 基本数据类型(数值,布尔)
    * 引用类型(也是变量,变量的值为引用),当参数类型为引用类型时,方法得到的是对象引用的拷贝,此时参数及其拷贝指向的是同一个对象,可以通过对象引用的拷贝实现对对象内容的修改。

* Java方法参数的使用情况:
* 
    * 一个方法不能修改基本数据类型的参数的值(数值型或布尔型)
    * 一个方法可以改变对象参数的状态(即对象的内容)
    * 一个方法不能让对象参数引用新的对象

package test;

import org.junit.After;

class Test{
public int number;

public Test(int number) {
     super();
     this.number = number;
}
public int getNumber() {
     return number;
}
public void setNumber(int number) {
     this.number = number;
}

}
public class Param {

//当参数为基本数据类型时,不能修改其值
public static void increase(int a){
     a=2*a;
}
public static void swap_1(int a,int b){
     int temp=a;
     a=b;
     b=temp;
}
//当参数为引用类型时,可以修改对象的内容
public static void changeTest(Test t){
     t.number=t.number+2;
}
//当参数为引用类型时,不能让参数指向新的对象
public static void swap(Test a,Test b){
     Test c=a;
     a=b;
     b=c;
}
public static void main(String[] args) {
     // TODO Auto-generated method stub
     int a=10;
     System.out.println(a);
     increase(a);
     System.out.println("after execute increase(int a) :"+a);
     int b=4;int c=5;
     swap_1(b, c);
     System.out.println(b+" "+c);
     Test aTest=new Test(1);
     Test bTest=new Test(2);
     System.out.println(aTest.number);
     changeTest(aTest);
     System.out.println("after execute changeTest(Test t)"+aTest.number);
     System.out.println(aTest.number+" "+bTest.number);
     //方法并没有改变存储在aTest,bTest中对象的引用
     //在方法结束之后拷贝被丢弃,原来的变量仍指向原来的对象
     swap(aTest, bTest);
     System.out.println("after execute swap(Test a,Test b) :"+aTest.number+" "+bTest.number);
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值