zoukankan      html  css  js  c++  java
  • Java面向对象编程 -1.5

    对象引用传递分析

    类本身属于引用传递类型,既然是引用传递类型,那么就牵扯到内存的引用传递

    所谓的引用传递的本质:同一块堆内存空间可以被不同的栈内存所指向,也可以更换指向。
    class Person{
    	int age;
    	String name;
    
    	public  void intorduce() {
    		System.out.println("age= "+age+" name= "+name);
    	}
    }
    public class xxx {
    	public static void main(String[] args) {
    		Person per1 = new Person();
    		per1.age=17;
    		per1.name="sakura";
    		Person per2 = per1;//引用传递
    		per2.age=20;
    		per1.intorduce();
    	}
    }
    

    一个堆内存被两个栈内存所指向

    per2.age=20;
    

    就好比 一个人 有大名 高上 和小名 小高
    高上被咬伤 小高肯定也受伤了

    这个时候的引用传递是直接在主方法之中定义的,也可以通过方法实现引用传递处理。

    class Person{
    	int age;
    	String name;
    
    	public  void intorduce() {
    		System.out.println("age= "+age+" name= "+name);
    	}
    }
    public class xxx {
    	public static void main(String[] args) {
    		Person per = new Person();
    		per.age=17;
    		per.name="sakura";
    		change(per);
    		per.intorduce();
    	}
    	public static void change(Person person) {
    		person.age = 40;
    	}
    }
    

    与之前的差别最大的地方在于,此时的程序是将Person类的实例化对象(内存地址(数值))传递到了change()方法之中
    由于我们传递的是一个Person类型,那么change()方法接收的也是Person类型。

    引用传递可以发生在方法上,这个时候一定要观察方法的参数类型,同时也要观察方法的执行过程。

  • 相关阅读:
    php字符串相加
    elementUI的input输入一个字符就失去焦点问题
    js鸡尾酒排序算法
    js快速排序算法
    js冒泡排序算法改进
    js实现队列
    EXIF.js 读取图片的方向
    new Image().src资源重复请求问题
    canvas绘制圆图输出图片格式
    去掉"You are running Vue in development mode"提示
  • 原文地址:https://www.cnblogs.com/sakura579/p/12319152.html
Copyright © 2011-2022 走看看