zoukankan      html  css  js  c++  java
  • 一段代码让你秒懂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);
    	}
    }
    

  • 相关阅读:
    Java 的Throwable、error、exception的区别
    最长回文子序列和最长回文子串
    牛客练习赛40 C-小A与欧拉路
    判断一棵树是否为二叉搜索树,完全二叉树和二叉平衡树
    Java语言的特点和特性
    设计模式
    联合索引和单列索引
    如何优化sql查询
    数据库的范式和约束
    数据库事务ACID和事务的隔离级别
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5055421.html
Copyright © 2011-2022 走看看