深度解析Java值传递和引用传递
- 更新时间:2020-03-14 19:16:22
- 编辑:龚春竹
先使用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中的按值传递和按引用传递,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!
相关教程
-
基于Java文件输入输出流实现文件上传下载功能
这篇文章主要为大家详细介绍了基于Java文件输入输出流实现文件上传下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2019-06-04
-
通过字节码看java中this的隐式传参详解
这篇文章主要给大家介绍了关于如何通过字节码看java中this的隐式传参的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着
发布时间:2019-06-04
-
揭秘Java虚拟机:JVM设计原理与实现
《揭秘Java虚拟机》Java工程师高质量成长的必读本,谷歌官方认可的android开发语言Kotlin的基石。看透JVM设计思想与原理,彻底领悟JAVA编程精髓,以不变应万变!
大小:186.2 MBJava虚拟机电子书
-
Java学习指南
《Java学习指南(第4版)(上、下册)》 是畅销Java学习指南的最新版,详细介绍了Java 6和Java 7的语言特性和API。本书全面介绍了Java的基础知识,力图通过完备地介绍Java语言、其类库、编程技术以及
大小:179.5 MBJava电子书
-
Head First Java(中文)
本书是一本完整地面向对象(object-oriented,OO)程序设计和Java的学习指导用书,图文并茂学习方式能让你快速地在脑海中掌握住知识,欢迎下载使用
大小:48.8 MBJava学习电子书
-
JavaScript语言精粹
JavaScript曾是全世界非常容易误解的言语,由于它肩负过多的特点,包含槽糕的互动和不成功的设计方案,但伴随着Ajax的来临,JavaScript从极受误会的程序语言演化为十分时髦的言语,这除开好
大小:9.9 MBJavaScript电子书
-
JavaScript框架设计
JavaScript,框架设计
大小:286.4 MBjs框架电子书
-
Java机器学习
利用Java机器学习常见库设计、构建、部署你自己的机器学习应用,包含机器学习基本概念、原理,Weka、Mahout、Spark等常见机器学习库的用法
大小:80.7 MBJava电子书
-
Java游戏编程开发教程
Java游戏编程开发教程 是一本面向广大编程爱好者的游戏设计类图书。本书从最基本的Java图形开发开始,对游戏的原理及其Java程序实现进行了详细介绍,包括动画的实现、音效的处理、鼠标和
大小:160.3 MBJava编程电子书