关于java程序参数传递问题
结论:java程序设计语言总是采用按值调用
1 一个方法不能修改一个基本数据类型参数的值
public static void chang_0(int x)
{
x = 5;
}
public static void main(String[] args) {
int a = 15;
chang_0(a);
System.out.println(a);
}
输出:
15
2 一个方法可以改变一个对象参数的状态,也就是说可以改变一个对象的成员变量
package com.chengwei.corejava.study;
public class ObjectStudy {
public static void chang_2(Employee a)
{
a.setName("cheng_name_a");
}
public static void main(String[] args) {
Employee a = new Employee("a");
chang_2(a);
System.out.println(a.getName());
}
}
class Employee
{
private String name;
public Employee(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
输出:
cheng_name_a
3 一个方法不能让对象参数(引用类型)已用一个新的对象,也就是说改变对象的地址值。
public class ObjectStudy {
public static void change_(Employee x, Employee y)
{
Employee temp = x;
x = y;
y = temp;
}
public static void main(String[] args) {
Employee a = new Employee("a");
Employee b = new Employee("b");
change_(a, b);
System.out.println(a.getName());
System.out.println(b.getName());
}
}
class Employee
{
private String name;
public Employee(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
输出:
a
b
综上所述:java程序设计语言总是采用按值调用
PS:下面链接为更详细的说明,有图有真相,欢迎大家查看
link.