java由于其内容的丰富性以及其功能的强大性,广受大家青睐。java基础知识是非常繁杂的,今天就来为大家介绍一些java中的参数传递机制是什么并且通过实际的例子来为大家展示。
一、首先看一段代码,如下所示:
public class Man { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Man{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Man(String name, Integer age) { this.name = name; this.age = age; } public static void swap(Man x, Man y) { Man temp = y; y = x; x = temp; } }
public class Main { public static void main(String[] args) { Man a = new Man("a", 65); Man b = new Man("b", 66); Man.staticswap(a, b); System.out.println(a + "\n" + b); } }
运行结果如下图:
可以看出,对象a b的引用并没有发生改变。
二、下面就说说java的参数传递机制
1.java参数传递并不是引用传递,而是值传递。
如下图所示:
2.由上可知,swap中,a b向x y传递的是值,是a b在栈中的值,此处的传递=拷贝。
也就是说,a b与x y除了类型一致外、值相等(指向了堆的同一地址),没有任何相同的地方。
3.a b与x y完全不相干。既然无关,那么,x y不管如何改变自身的值 ,与a b都无关。因此,方法退出,a b的引用并没有发生变化。
3.再看下一个,改写swap方法,代码如下所示:
public static void swap(Man m) { m = new Man("xx", 88); }
调用运行结果如下图:
会发现传递的是值。
以上就是关于java中的参数传递机制是什么并且通过实际的代码为大家展示。如果你对java知识感兴趣,想要了解更多java经典例子以及常见问题,敬请关注奇Q工具网。
推荐阅读: