java的参数传递

时间:2021-07-31 17:32:28

1按值传递:传递的是原始值的副本,而不是原始值的内存地址

     基本数据类型是传原始值的副本

 

class Test02

  {

  
public static void main(String[] args)

  {

  
int i=5;

  
int i2=i;

  i2
=6;

  System.out.println(i);

  }

  }

输出结果是5

2按引用传递;传递的是原始值的内存地址,而不是原始值的副本

    对象类型传的是原始值的引用

class Test01

  {

  
public static void main(String[] args)

  {

  StringBuffer s
= new StringBuffer("good");

  StringBuffer s2
=s;

  s2.append(
" afternoon.");

  System.out.println(s);

  }

  }

输出结果是:good afernoon

3.String类型因为没有提供自身修改的函数,每次操作都是新生成一个String对象,所以要特殊对待。可以认为是传值。

  创建一个String,内部操作是

    1先在常量池查找有无该原始值 无则创建

    2在堆中创建一个该原始值的对象

    3将堆中该对象的引用传给变量

  当修改Strng对象的值时,内部操作是

    1先在常量池查找有无该原始值 无则创建

    2将常量池中该对象的引用传给变量