By
老码
前言
本文讲述的是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
|
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(即方法外部的)的地址并未发生改变,从而原地址指向的内容也不会改变.所以,输出的结果都不会变啊啊啊啊啊啊啊啊啊啊…
感谢
感谢访问我的个人博客的朋友,如果您感觉本站对您搜索的问题有所帮助,并感觉对本站还满意的话,顶一下吧,希望您把本站分享给您的朋友!在此对您表示由衷的谢意! :-)