Java中的按值传递和按引用传递的代码详解
先使用int实验:
public class TTEST { private static List<UserEntity> mList = new LinkedList<UserEntity>(); public static void main(String[] args) { int a = 0; changeA(a); System.out.println("a = "+a); } public static void changeA(int a){ a = 1; } }
输出:a = 0
这说明对于int值是按值传递。其他几个基本类型也是如此。
再使用自己定义的类UserEntity来实验:
public class UserEntity { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } public class TTEST { public static void main(String[] args) { UserEntity userEntity = new UserEntity(); userEntity.setName("猿猴"); changeName(userEntity); System.out.println("name = "+userEntity.getName()); } public static void changeName(UserEntity userEntity){ userEntity.setName("忽必烈"); } }
输出:name = 忽必烈
我们再来使用一个linkedList<Object>来实验:
import java.util.LinkedList; import java.util.List; public class TTEST { private static List<UserEntity> mList = new LinkedList<UserEntity>(); public static void main(String[] args) { UserEntity userEntity = new UserEntity(); userEntity.setName("石头"); addUser(userEntity); System.out.println("name = "+userEntity.getName()); } public static void addUser(UserEntity userEntity){ mList.add(userEntity); mList.get(0).setName("猿猴"); } }
输出:name= 猿猴
这说明在使用我们自己定义的类时,是按引用传递的。
接着,再来使用String实验:
public class TTEST { public static void main(String[] args) { String str= "开始的"; changeStr(str); System.out.println("str = "+str); } public static void changeStr(String str){ str = "改变的"; } }
输出:str = 开始的
用Integer做实验也会发现没有改变。
说明我们按照java内置的对象也是值传递。因此我们可以做如下总结:
只要我们自己定义的类创建的对象,都是引用传递,系统内置的基本类型和对象都是指传递。
总结
以上所述是小编给大家介绍的Java中的按值传递和按引用传递,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
SecurityUtils.getSubject().getPrincipal()为null的问题
这篇文章主要介绍了SecurityUtils.getSubject().getPrincipal()为null的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-07-07java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现
这篇文章主要介绍了java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09java(jdk)环境变量配置(XP、win7、win8)图文教程详解
对于初学java的同学来说,第一件事不是写hello world,而是搭建好java开发环境,下载jdk,安装,配置环境变量。这些操作在xp、win7、win8不同的操作系统里面配置不太一样,下面通过本文给大家介绍如何在上面不同操作系统下配置2017-03-03Java+Freemarker实现根据XML模板文件生成Word文档
这篇文章主要为大家详细介绍了Java如何使用Freemarker实现根据XML模板文件生成Word文档,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下2023-11-11Java中的logback标记日志过滤器MarkerFilter详解
这篇文章主要介绍了Java中的logback标记日志过滤器MarkerFilter详解,在logback-classic中存在一个全局过滤器TurboFilter,TurboFilter是与LoggerContext绑定,会在会在其它过滤器之前执行,需要的朋友可以参考下2023-11-11
最新评论