• 一段代码让你秒懂java方法究竟是传值还是传地址


    先看看代码以及执行结果:

    凝视写得非常清楚了。我就不多说了。


    我说说我的结论。事实上在java中没有传值还是传址的概念,java仅仅有引用的概念。引用类似传址。只是是一个变量名中保存着对象的地址,地址指向一个对象。

    引用又类似传值。对于方法来说形參和实參都是变量名,变量名中的地址是一样的,说他像传值是由于变量的值(保存的地址)是从实參传递到形參的。


    上面是我的看法。欢迎大家一起讨论这个观点。


    上源代码,不愿意写又想自己试试的往下看:

    package com.elong.valueoraddress;
    
    public class Student {
    	private int id;
    	private String name;
    	private int classId;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getClassId() {
    		return classId;
    	}
    	public void setClassId(int classId) {
    		this.classId = classId;
    	}
    	@Override
    	public String toString() {
    		return "Student [id=" + id + ", name=" + name + ", classId=" + classId
    				+ "]";
    	}
    }
    

    package com.elong.valueoraddress;
    
    import org.junit.Test;
    
    public class TestStudent {
    	//变量名中存的是对象的地址
    	@Test
    	public void test() {
    		Student student = new Student();
    		student.setId(1);
    		student.setName("elong");
    		student.setClassId(1);
    		//传入的是student中存放的对象地址
    		change(student);
    		System.out.println(student);
    	}
    	public void change(Student student){
    		Student student2 = new Student();
    		student2.setId(2);
    		student2.setName("elongdeo");
    		student2.setClassId(2);
    		//对student指向的对象进行属性变动
    		student.setId(3);
    		student.setName("dingyinlong");
    		student.setClassId(3);
    		//student = student2表示把student2指向的对象的地址赋值给student
    		student = student2;	
    		//对原student2指向的对象进行属性变动
    		student.setId(4);
    		student.setName("yinlong");
    		student.setClassId(4);
    	}
    }
    

  • 相关阅读:
    个人网址收集
    使用 TListView 控件(2)
    C# 语法练习(14): 类[六] 事件
    如何在 "万一的 Delphi 博客" 回复自动格式化的着色代码?
    使用 TListView 控件(1)
    C# 语法练习(13): 类[五] 索引器
    使用 TListView 控件(4)
    C# 语法练习(11): 类[三] 构造函数、析构函数、base、this
    C# 语法练习(12): 类[四] 抽象类与抽象成员、密封类与密封成员
    使用 TListView 控件(3)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5055421.html
Copyright © 2020-2023  润新知