1、基本数据类型作为参数传递
传递的是真正的值,在一个方法中改变变量的值,对另一个方法中的变量的值没有任何影响,各自变量是独立的
例:
public class Method01 {
public static void add(int x,int y) {
x += 5;
y += 5;
System.out.println("x:" + x);
System.out.println("y:" + y);
}
public static void main(String[] args) {
int x = 5;
int y = 6;
System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("调用add方法");
add(x,y);
System.out.println("x的值" + x);
System.out.println("y的值" + y);
}
}
输出结果:
2、引用数据类型进行参数传递
1.多个引用名称指向同一个对象,当一个引用名称改变对象中的值,则另一个引用名称在访问属性时的值也会发生改变
Student类
public class Student {
String name;
int age;
public Student() {
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
StudentTest类
public class StudentTest {
public static void main(String[] args) {
//实例化学生类
Student stu = new Student("张三",21);
Student stu02;
stu02 = stu;//stu02与stu共用一个地址,也就是说stu02与stu引用名称指向同一个对象
System.out.println("stu02.name=" + stu02.name);
System.out.println("stu02.age=" + stu02.age);
System.out.println("分界线------------------------------------");
stu02.name = "李四";
System.out.println("stu02.name=" + stu02.name);
System.out.println("stu02.age=" + stu02.age);
System.out.println("分界线------------------------------------");
System.out.println("stu.name=" + stu.name);
System.out.println("stu.age=" + stu.age);
}
}
输出结果为:
2.当引用数据类型作为参数进行传递时,传递的是地址,也就是说,共用同一个地址,当一个方法中地址所对应的属性值发生改变,则另一个地址中所对应的属性值也会发生改变
Student02类
public class Student02 {
String name;
int age;
public Student02() {
}
public Student02(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
StudentTest02类
public class StudentTest02 {
public static void change(Student02 s) {
System.out.println(s.name);
System.out.println(s.age);
s.name = "无名氏";
}
public static void main(String[] args) {
Student02 stu02 = new Student02("张三",21);
System.out.println(stu02.name);
System.out.println(stu02.age);
System.out.println("分界线------------------------");
change(stu02);
System.out.println("分界线------------------------");
System.out.println("stu02.name=" + stu02.name);
System.out.println("stu02.age=" + stu02.age);
}
}
输出结果为:
3.总结
1)多个引用名称指向同一个对象,当一个引用名称改变对象中的值,则另一个引用名称在访问属性时的值也会发生改变
2)当引用数据类型作为参数进行传递时,传递的是地址,也就是说,共用同一个地址,当一个方法中地址所对应的属性值发生改变,则另一个地址中所对应的属性值也会发生改变