"值传递"只是一个术语,一个代号,有欺骗性,有二义性,这个术语的具体意思看括号里的表达

** "值传递"只是一个术语,一个代号,有欺骗性,有二义性,这个术语的具体意思看括号里的表达 基本类型数据传递:值传递(原值复制后传递,复制后的值可以改变,过了作用域就变垃圾,原值还在,仍然没有改变) 引用类型数据传递:值传递(栈内存地址复制后传递,内存地址都指向同一个堆内存的值,所以原值能被改变)**

/**
复制代码
* 写一个swap方法交换两个int,观察main里的变量是否被交换(理解为什么),用debug单步观察 * * "值传递"只是一个术语,一个代号,有欺骗性,有二义性,这个术语的具体意思看括号里的表达 * 基本类型数据传递:值传递(原值复制后传递,复制后的值可以改变,过了作用域就变垃圾,原值还在,仍然没有改变) * 引用类型数据传递:值传递(栈内存地址复制后传递,内存地址都指向同一个堆内存的值,所以原值能被改变) * 要想改变原值,变量就要使用引用类型,不能使用基本类型 * */ public class Day24SwapTest { public static void main(String[] args) { int a = 3; int b = 5; int[] intArray = {30,50}; System.out.println("----------两个基本的整形交换----------"); System.out.println("【交换前】a = " + a + ",b = " + b); swapInt(a, b); System.out.println("【交换后】a = " + a + ",b = " + b); System.out.println("----------两个数组的整形交换----------"); System.out.println("【交换前】a = " + intArray[0] + ",b = " + intArray[1]); swapInt(a, b); System.out.println("【交换后】a = " + intArray[0] + ",b = " + intArray[1]); } public static void swapInt(int a, int b) { int temp = a; a = b; b = temp; } public static void swapIntArray(int[] intArray) { int temp = intArray[0]; intArray[0] = intArray[1]; intArray[1] = temp; } }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
鱼友0258
下载 APP