"值传递"只是一个术语,一个代号,有欺骗性,有二义性,这个术语的具体意思看括号里的表达
** "值传递"只是一个术语,一个代号,有欺骗性,有二义性,这个术语的具体意思看括号里的表达 基本类型数据传递:值传递(原值复制后传递,复制后的值可以改变,过了作用域就变垃圾,原值还在,仍然没有改变) 引用类型数据传递:值传递(栈内存地址复制后传递,内存地址都指向同一个堆内存的值,所以原值能被改变)**
▼/**复制代码* 写一个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个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
作者分享
练习即生产
1
边界自校验、失败域统一、映射显式化
3
Java 从左到右求参数:拼接 sb 的时候,factorial 还没被调用
1
【递归计数器:-597,265,727】 fib(50) = -298,632,863
1
🚩Java
D16
1、联接自己的项目来练习写代码,效果好像好一点
2、把看视频、看书的知识落地,看的简单,做起来有点难,做完了,好像也就是那么一回事
3、没有学习新知识,通过练习写健壮的企业级的小代码,深度有了一点感觉。80%时间做非核心的80%工作,写核心的13行代码只能拿基本工资,写200行非核心的代码再拿剩下的部分
4、学习了正则表达式、String、StringBuilder、StringBuffer、格式化输出、Matcher、Pattern
3
