JAVA的值传递和引用传递

概念

值传递:是将实参的值赋值给形参
引用传递:将实参(变量)的值(地址)赋值给形参(副本)
故,归根结底来说,java其实就只有值传递这一种方式,形参会被初始化为实参的副本。
引用传递:
在这里插入图片描述

举例

值传递

  public static void main(String[] args) {
      int a = 10,b =20;
      swap(a,b);
      //a依旧为10,b为20
    }
  static void swap(int x, int y){
  		int t =x;
  		x = y;
  		y = t;
  }  

引用传递(值传递)

 public static void main(String[] args) {
      int[] a = {10,20,30};
      change(a);
      //a[1] = 30
      //x创建一个副本变量,指向变量a指向的地址
    }
  static void change(int[] x){
   		//变量x指向数组地址,对该地址内的数据进行修改
  		x[1] = 30;
  }  
 public static void main(String[] args) {
      Integer a = 10,b =20;
      swap(a,b);
      //a依旧为10,b为20
       //创建副本x,y变量,分别指向a,b指向的地址
       
	  String s = "lzw";
	  change(s); //此处的s仍为lzw,而不是Lee
	  //因为传过去的是保存 s变量的值 的副本变量,副本的值为"lzw"的地址值
	  //在函数中将副本变量的值改为了"Lee"的地址值
	  //但不会影响到实参变量s的值
    }
  static void swap(Integer x, Integer y){
  	// 只是交换变量x,y指向的地址
  	//对地址本身的内容并没有修改
  		Integer t =x;
  		x = y;
  		y = t;
  }  
  static void change(String s){
    //只是修改了副本变量的值
    //并没有修改实参s的值
  	 s = "Lee";
  }  

总结

java其实就只有值传递这一种方式,即形参创建实参对应的副本数据。
1)不能通过方法传递,修改基本类型的数据
2)不能通过方法传递,让原对象变量指向另外的一个地址
3)可以修改原对象指向地址内的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值