如何在方法中执行同一操作却得到不同输出结果?
在 java 中,当将对象传递到方法时,会传递对象的引用,而不是对象本身的值。这可能会导致意料之外的行为,如下例所示:
public class API_Boolean { public static void main(String[] args) { // 第一次操作 String str = "aaa"; String newStr = test(str); System.out.println(str); // 输出 "aaa" // 第二次操作 String a = "xxx"; a = a + "yyy"; System.out.println(a); // 输出 "xxxyyy" } public static String test(String s) { s = s + "bbb"; return s; } }
登录后复制
在第一次操作中,str 变量存储一个指向字符串 "aaa" 的内存地址。当我们调用 test 方法时,我们传递的不是字符串本身,而是指向该字符串的引用。方法中更改 s 的值会影响 newstr,但不会影响 str。
然而,在第二次操作中,a 直接存储字符串 "xxx",而不是引用。当我们对 a 进行加法操作时,java 创建一个新的字符串对象 "xxxyyy",并将其赋值给 a。因此,a 的值发生了改变。
立即学习“Java免费学习笔记(深入)”;
值得注意的是,这种情况只适用于对象类型,例如字符串。对于基本类型(例如 int、double),传递的是值本身,而不是引用。
以上就是Java 中方法的参数传递:为什么同一个操作会产生不同的结果?的详细内容,更多请关注抖狐科技其它相关文章!
-
沙威玛传奇炸薯条升级方法说明
炸薯条自动化指南在沙威玛传奇游戏中,炸薯条是不可或缺的基础食物。随着游戏进程的推进,玩家需要对炸薯条进行升级,最终实现自动化炸薯条的生产。为了帮助玩家更深入了解炸薯条升级机制,php小编新一特此整理了...
-
金铲铲之战碎舰者给谁 英雄大全
想知道金铲铲之战中强势的碎舰者适合装备给哪位英雄吗?php小编苹果为您带来碎舰者英雄大全,为您详解碎舰者在各个阵容中的搭配策略。阅读本文,您将了解碎舰者在不同阵容中的优劣势,并找到最适合您的装备组合。...
-
怎么关掉优酷会员
您可以通过优酷网站、手机app或客服电话取消会员。具体步骤包括:在优酷网站或app中找到“取消”按钮,取消前建议查看注意事项,例如剩余会员时间无法退款。如何取消优酷会员 一、通过优酷网站取消打开优酷官...
-
《刺客信条:影》宣传片在日本被狂踩 接近8000个踩
育碧日本油管频道在发布《刺客信条:影》“世界”宣传片4天后,仅收获了266个点赞,但点踩数量却高达7944个,接近8000。点踩数量几乎是点赞的30倍。评论区清一色的讨伐声音,很多日本玩家希望育碧因为...
-
C语言算法:深度学习与算法应用
摘要:本教程介绍了 c 语言中的深度学习算法及其应用。基本算法包括:线性回归:训练模型并最小化误差。逻辑回归:计算逻辑函数和训练模型。决策树:创建节点并训练树模型。实战案例:图像分类:读入图像数据。训...