全部
技术
PHP
MySQL
前端
Linux
JAVA
工具
纪念日计算器
邮记星
个人记账
笔记侠
历史上的今天
生日密码
生日书
生日密码
生日花语
博古通今
三十六计
鬼谷子
笑林广记
本草纲目
山海经
唐诗宋词
宋词300首
唐诗300首
退出
登录
注册
编辑文章
选择分类
PHP
MySQL
前端
Linux
Java
工具
选择专栏
设计模式
java基础
Angular学习
Java面试题
描述:
java 引用传递
封面图上传 :
+
点击上传图片
#### 引用传递 引用传递时java的精神所在,引用传递的核心:同一个堆内存可以被多个栈内存所指向。,不同栈内存可以对同一个堆内存进行修改。 ##### 引用传递案例1 ```java class Person{ private int age; public Person(int age){ this.age = age; } public void setAge(int age){ this.age = age; } public int getAge(){ return this.age; } } public class TestQuote{ public static void main(String[] arg){ Person person = new Person(25); System.out.println(person.getAge());//结果25 fun(person); System.out.println(person.getAge());//结果27 } public static void fun(Person temp){ temp.setAge(27); } } ``` ![int引用传递图解](/storage/articles/202003/content/202003291702085e80641047846.png) ##### String引用传递案例1 如下代码:对象未被改变,输出还是bobo。这个原因时字符串时不表的,你temp=“boboyoucan”后,temp的指向就变了,变成了指向字符串“boboyoucan”的堆内存 ```java public class TestQuote{ public static void main(String[] arg){ String a = "bobo"; fun(a); System.out.println(a);//bobo } public static void fun(String temp){ temp= "boboyoucan"; } } ``` ![](/storage/articles/202003/content/202003291701315e8063ebb11f1.png) ##### String引用传递案例2 ```java class Person{ private String name; public Person(String name){ this.name = name; } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } } public class TestQuote{ public static void main(String[] arg){ Person person = new Person("bobo"); fun(person); System.out.println(person.getName());//结果boboyoucan } public static void fun(Person temp){ temp.setName("boboyoucan"); } } ``` ![](/storage/articles/202003/content/202003291701485e8063fc01c04.png)
保存文章