内容稍多,可直接看第4点的讨论结果

前言

在涉及到传递参数给方法时,容易出现一些参数传递错误的问题,这就涉及到了参数的传递问题,必须搞清楚:参数是如何传递到方法中的?一般来说,参数的传递可以分为两种:值传递和引用传递。

所谓值传递,就是方法中的形参获得的是实参的值,而引用传递,就是说方法中的形参获得的是实参的引用(地址)。

参数的传递其实类似于一个赋值操作,所以接下来,先讨论值和地址的问题,再讨论赋值操作,最后才进行参数传递的讨论。

1.基本概念

  首先要搞清楚一个概念,即:变量中储存的内容是什么。

  变量类型分为基本数据类型和引用类型:

    基本数据类型的变量直接存储的是变量的值,如int i=10;  i中存储的为变量的值。

    引用类型的变量存储的则是实际对象的地址,如Dog myDog = new Dog();  myDog中存储的仅仅是地址(也可以称为引用)。

 

2.赋值操作

  需要明确赋值操作的含义。

  赋值操作“=”包含两个意思:1.放弃了原有的值或引用;2.得到了 = 右侧变量的值或引用。

    基本类型:= 操作代表完整复制了变量的值。例如:int a=b;  a仅获取了b的值,两者在此之后并无任何关系。

    引用类型:= 操作代表复制了变量的引用。 例如:Dog aDog=bDog;  aDog复制了bDog的引用,两个变量都指向同一个Dog对象。

  一个简单的例子:

public class Test {
    public static void main(String[] args)  {
    	int x=10;
    	int y=x;
    	x=20;
    	System.out.println("x:"+x);
    	System.out.println("y:"+y);
    	Dog aDog=new Dog();
    	aDog.name="阿黄";
    	aDog.age=1;
    	Dog bDog=aDog;
    	aDog.name="旺财";//改变aDog的名字
    	bDog.age=2;//改变bDog的年龄
    	System.out.println("aDog:"+aDog.name+","+aDog.age);
    	System.out.println("bDog:"+bDog.name+","+bDog.age);
    }
}

class Dog {
	String name;
	int age;
}

  

x:20
y:10
aDog:旺财,2
bDog:旺财,2
输出结果

相关文章:

  • 2021-10-31
  • 2021-11-19
  • 2021-11-29
  • 2021-09-05
  • 2021-09-04
猜你喜欢
  • 2021-11-10
  • 2021-05-25
  • 2022-01-18
  • 2021-09-14
  • 2021-07-19
相关资源
相似解决方案