当前位置: 首页 > 图灵资讯 > 技术篇> 【图灵干货】Java参数传递

【图灵干货】Java参数传递

来源:图灵教育
时间:2023-03-04 09:16:04

  Java传递参数的方式有两种,分别是按值传递和引用传递,string类型比较特殊,需要分别介绍。Java参数只传递值复制,而不包含引用传递。这篇文章介绍了基本类型、引用类型和字符串类型。

Java<a href=https://www.tulingxueyuan.cn/tlzx/jsp/819.html target=_blank class=infotextkey>参数传递</a>

  1.基本类型

  基本类型作为实参时,该值会拷贝一份在方法中使用,方法中对参数的改变不会影响原来的值;

  public class TestString {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  int i=5;

  change(i);

  System.out.println(i);

  }

  private static void change(int i){

  i=10;

  }

  }

  输出:5

  2.引用类型

  引用类型的值是堆中数据所占内存的首地址,当引用类型作为方法实参时,编译器会在复制一份该地址在方法中使用,此时有两种情况:

  1)如果方法改变了引用指向的数据的内容,则方法外的引用指向的内容也会改变;

  2)如果方法将此引用指向了其他的内存地址,则方法外该引用执行的内容不变;

  第一种情况:

  public class TestString {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  Test t1=new Test();

  changeContent(t1);

  System.out.println(t1.s);

  }

  private static void changeContent(Test t){

  t.s="change content";

  }

  }

  class Test{

  String s="empty";

  }

  output:

  change content

  第二种情况:

  public class TestString {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  Test t1=new Test();

  changeReference(t1);

  System.out.println(t1.s);

  }

  private static void changeReference(Test t){

  t=new Test();

  t.s="changeRefence";

  }

  }

  class Test{

  String s="empty";

  }

  output:

  empty

  3.当string类型作为参数时,由于string的不可变的性质,因此当方法中改变了string的内容时,方法外参数指向的内容仍然不变

  public class TestString {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  String s="old";

  change(s);System.out.println(s);

  }

  private static void change(String s){

  s="change string";

  }

  }

  output:

  old

  学Java的同学们是否对Java参数传递有一定的了解?在网上了解关于Java参数传递的知识,请点击图灵官网。