引用传递的实例分析

    xiaoxiao2025-04-30  14

    1、学习内容

    通过三个程序来分析引用传递,理解String的不可改变性。

    2、具体内容

    引用的意义:同一块堆内存可以被不同的栈内存所指向,不同栈内存可以对同一堆内存进行内容修改。 范例:引用传递第一例

    class Message{ private int num=10; public Message(int num){ this.num=num; } public void setNum(int num){ this.num=num; } public int getNum(){ return this.num; } } public class TestDemo{ public static void main(String args[]){ Message msg=new Message(30); fun(msg); System.out.println(msg.getNum()); } public static void fun(Message temp){ temp.setNum(100); } }

    范例:引用传递第二例

    public class TestDemo { public static void main(String args[]){ String msg="hello"; fun(msg); System.out.println(msg); } public static void fun(String temp){ temp="world"; } }

    内存分析: 以上的题目有一个解决思路:String类对象的内容一旦声明则不可改变,对象内容的改变依靠的对象引用地址的改变,字符串不可以改变,只能改变内存地址指向。

    范例:引用传递第三例

    class Message{ private String info="nihao"; public Message(String info){ this.info=info; } public void setInfo(String info){ this.info=info; } public String getInfo(){ return this.info; } } public class TestDemo { public static void main(String args[]){ Message msg=new Message("hello"); fun(msg); System.out.println(msg.getInfo()); } public static void fun(Message temp){ temp.setInfo("world"); } }

    总结

    1.String类不可改变; 2.同一块堆内存可以被不同的栈内存所指向,不同栈内存可以对同一堆内存进行内容修改;

    最新回复(0)