Fork me on GitHub
文章目录
  1. 1. 前言
  2. 2. 一段话解析
  3. 3. 感谢

前言


本文讲述的是Java中参数传递相关的一些知识点.

先来看一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* Created by yongf on 16-5-16.
* 参数传递
*/
public class ParameterPass {

public static void main(String[] args) {
Student student1 = new Student("张三", "001");
System.out.println("[修改前]: " + student1);

modifyInfo(student1);
System.out.println("[修改后]: " + student1);
}

private static void modifyInfo(Student student) {
System.out.println("[正在修改]: " + student);
student = new Student(student.name, "002");
}
}

class Student {

String name;
String id;

public Student(String name, String id) {
this.name = name;
this.id = id;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
'}';
}
}

你能立刻写出这段代码的输出结果么?如果可以,那么后面就不用看了;如果不能,那就继续.

这段代码的运行结果如下:

1
2
3
[修改前]: Student{name='张三', id='001'}
[正在修改]: Student{name='张三', id='001'}
[修改后]: Student{name='张三', id='001'}

一段话解析


其实是Java中很基础的知识点,所以说,基础很重要.

方法传递参数时,对于基本类型的变量,传递的是变量的值的副本;对于引用类型的变量,传递的是地址的值的副本(所以说Java中都是值传递啊).

对于上述例子,modifyInfo方法内部,只是将student地址的副本指向了新的地址,真正的student(即方法外部的)的地址并未发生改变,从而原地址指向的内容也不会改变.所以,输出的结果都不会变啊啊啊啊啊啊啊啊啊啊…

感谢

感谢访问我的个人博客的朋友,如果您感觉本站对您搜索的问题有所帮助,并感觉对本站还满意的话,顶一下吧,希望您把本站分享给您的朋友!在此对您表示由衷的谢意! :-)