Java值传递
转载:https://github.com/CyC2018/CS-Notes/blob/master/notes/Java 基础.md
package ink.openmind.pattern.strategy.demo02; /** * ClassName: MainDemo * Function: * Date: 2020/9/4 5:14 上午 * author Wangzhuang2 * version V1.0 * TODO: 参数传递 * DESC: Java的参数是以值传递的形式传入方法中,而不是引用传递 */ /** * Dog dog的dog是一个指针,存储的是对象的地址。在将一个参数传入一个方法时, * 本质上是将对象的地址以值的方式传递到形参 * */ class Dog{ String name; Dog(String name){ this.name = name; } String getName(){ return this.name; } void setName(String name){ this.name = name; } String getObjectAddress(){ return super.toString(); } } /** * 在方法中改变对象的字段值会改变原对象该字段值,因为引用的是同一个对象 * */ public class MainDemo { public static void main(String[] args) { funcOnDiffObject(); } private static void funcOnSameObject(){ Dog dog = new Dog("A"); System.out.println(dog.getObjectAddress()); // ink.openmind.pattern.strategy.demo02.Dog@31befd9f func01(dog); System.out.println(dog.getObjectAddress()); // ink.openmind.pattern.strategy.demo02.Dog@31befd9f System.out.println(dog.getName()); } private static void funcOnDiffObject(){ Dog dog = new Dog("A"); System.out.println(dog.getObjectAddress()); // ink.openmind.pattern.strategy.demo02.Dog@31befd9f func02(dog); System.out.println(dog.getObjectAddress()); // ink.openmind.pattern.strategy.demo02.Dog@31befd9f System.out.println(dog.getName()); } private static void func01(Dog dog){ dog.setName("B"); } private static void func02(Dog dog){ System.out.println(dog.getObjectAddress()); // ink.openmind.pattern.strategy.demo02.Dog@1c20c684 /* * 此时方法中的指针引用了其他对象,方法里和方法外的两个指针指向不同的对象,在一个指针 * 改变其所指向对象的内容对另一个指针所指向的对象没有影响 * */ dog = new Dog("B"); System.out.println(dog.getObjectAddress()); // B System.out.println(dog.getName()); // ink.openmind.pattern.strategy.demo02.Dog@31befd9f } }
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具