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类型。

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

  • 相关阅读:
    听说在新的一年里你的证书过期了
    css 清楚浮动的8种方式
    Majority Element:主元素
    HDOJ 5296 Annoying problem LCA+数据结构
    hdu 5318 The Goddess Of The Moon 矩阵高速幂
    友盟页面统计
    用html语言写一个功课表
    苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
    Atitit.mssql 数据库表记录数and 表体积大小统计
    jeecms 代码生成 Tools
  • 原文地址:https://www.cnblogs.com/sakura579/p/12319152.html
Copyright © 2011-2022 走看看