这篇文章主要介绍了Java方法参数传递机制原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java方法中如果声明了形参,在调用方法时就必须给这些形参指定参数值,实际传进去的这个值就叫做实参。
这就涉及到Java中的参数传递机制,值传递。
基本数据类型
基本数据类型,值传递的体现是数值的传递。
public class TransferTempTest { public static void main(String[] args) { //基本数据类型参数传递 TransferTempTest test = new TransferTempTest(); int num1 = 10; int num2 = 20; System.out.println("进行交换前:"); System.out.println("num1 = " + num1 + ",num2 = " + num2); test.swap(num1, num2); System.out.println("交换之后:"); System.out.println("num1 = " + num1 + ",num2 = " + num2); } public void swap(int a, int b) { int temp = a; a = b; b = temp; System.out.println("交换过程中:"); System.out.println("num1 = " + a + ",num2 = " + b); } }
//运行结果 进行交换前: num1 = 10,num2 = 20 交换过程中: num1 = 20,num2 = 10 交换之后: num1 = 10,num2 = 20
整个过程的内存图演示:
如图所示:
引用数据类型
基本数据类型,值传递的体现是地址值的传递。
public class TransferTempTest { public static void main(String[] args) { //引用类型参数传递 DataTemp data = new DataTemp(); data.a = 2; data.b = 4; System.out.println("进行交换前:"); System.out.println("data.a = " + data.a + ",data.b = " + data.b); data.swapClass(data); System.out.println("进行交换后:"); System.out.println("data.a = " + data.a + ",data.b = " + data.b); } } class DataTemp { int a; int b; public void swapClass(DataTemp data) { int temp = data.a; data.a = data.b; data.b = temp; System.out.println("交换过程中:"); System.out.println("data.a = " + data.a + ",data.b = " + data.b); } }
//运行结果 进行交换前: data.a = 2,data.b = 4 交换过程中: data.a = 4,data.b = 2 进行交换后: data.a = 4,data.b = 2
整个过程的内存图显示:
如图所示:
综合练习
package com.my.pac05; public class TransferTest { public static void main(String[] args) { TransferTest test = new TransferTest(); test.first(); } public void first() { int i = 5; Value v = new Value(); v.i = 25; second(v, i); System.out.println(v.i); } public void second(Value v, int i) { i = 0; v.i = 20; Value val = new Value(); v = val; System.out.println(v.i + " " + i); } } class Value { int i = 15; }
//运行结果 15 0 20
整个过程的内存图显示:
总结
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。