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

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

  • 相关阅读:
    Java设计模式之责任链模式
    多线程几个常用方法的实例
    Activiti工作流
    Java线程常用方法汇总
    Java线程的几个概念
    多线程——实现Callable接口
    java对象在JVM堆中的数据结构
    对计算机世界的认知
    wait、notify为什么要放在同步代码块中
    java synchronized关键字的底层实现
  • 原文地址:https://www.cnblogs.com/sakura579/p/12319152.html
Copyright © 2011-2022 走看看