JAVA一个关于传递引用的测试
public class PassTest {@Beforepublic void setUp() throws Exception {}/*** 测试对象已经指向具体的值*/@Testpublic void testPass1() {// 对象的引用已经指向了具体的对象Human human = new Someone();Map<String, String> map = new HashMap<>();getPerson1(human, map);System.out.println("human1:" + human + ", map1:" + map.toString());assertEquals("fish", map.get("food"));assertEquals("大哥", human.getName());}/*** 测试对象的引用尚未指向了具体的对象*/@Testpublic void testPass2() {// 对象的引用尚未指向了具体的对象Human human = null;Map<String, String> map = null;getPerson2(human, map);System.out.println("human2:" + human + ", map2:" + map);assertEquals(null, map);assertEquals(null, human);}/*** 测试对象的引用已经指向了具体的对象,在调用方法中重新指向另一个对象*/@Testpublic void testPass3() {// 对象的引用已经指向了具体的对象,在调用方法中重新指向另一个对象Human human = new Someone();Map<String, String> map = new HashMap<>();getPerson3(human, map);System.out.println("human3:" + human + ", map3:" + map.toString());assertEquals(0, map.size());assertEquals(null, human.getName());}/*** 测试对象的引用尚未指向了具体的对象,调用方法中创建对象、赋值,并返回对象的情况*/@Testpublic void testPass4() {Human human = null;human = getPerson4();System.out.println("human4:" + human);assertEquals("大哥", human.getName());}interface Human {public String getName();public void setName(String name);public void eat(Map<String, String> map);}class Someone implements Human {public String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic void eat(Map<String, String> map) {map.put("food", "fish");}@Overridepublic String toString() {return "Someone [name=" + name + "]";}}public void getPerson1(Human human, Map<String, String> map) {human.setName("大哥");human.eat(map);}public void getPerson2(Human human, Map<String, String> map) {human = new Someone();map = new HashMap<>();human.setName("大哥");human.eat(map);}private void getPerson3(Human human3, Map<String, String> map3) {Human human = new Someone();Map<String, String> map = new HashMap<>();human.setName("大哥");human.eat(map);human3 = human;map3 = map;}private Human getPerson4() {Human human = new Someone();human.setName("大哥");return human;}}

JAVA一个关于传递引用的测试的更多相关文章
- java方法强制传递引用参数(做为返回值),改变被传递参数值。
Java传递参数分为2种: 值类型,Java里面也叫简单类型,这种参数类型的传递的是它的副本拷贝: 引用类型,传递的是对象引用地址,如果在方法内改变该参数对象属性即是对原引用对象的改变:如果不想这样传 ...
- java基本数据类型传递与引用传递区别
文章转载自 zejian的博客http://blog.csdn.net/javazejian/article/details/51192130 java的值传递和引用传递在面试中一般都会都被涉及到, ...
- Java是值传递还是引用传递?
Java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题.这个问题一般是相对函数而言的,也就是Java中所说的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给方法的两 ...
- java传值与传引用
一.传值与传引用 1.不管java参数的类型是什么,一律传递参数的副本. 在thinking in java中,明确指出,如果java是传值,那么传递的是值的副本,如果java传递的是引用,那么传递的 ...
- Java 为值传递而不是引用传递
——reference Java is Pass by Value and Not Pass by Reference 其实这个问题是一个非常初级的问题,相关的概念初学者早已掌握,但是时间长了还是容易 ...
- java是值传递还是引用传递
首先写一个简便的Employee,以便测试使用. class Employee { private String name; public Employee(String name) { this.n ...
- 堆栈详解 + 彻底理解Java的值传递和引用传递
本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨 ...
- Java的值传递和引用传递的说法
学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨论的话题又是充满争议:有的论坛帖子说Java ...
- Java中值传递和引用传递的概念
很多书中都提到了在Java中只存在值传递,但是今天在一个NanoHTTPD的源码中看到这样一段: if (qmi >= 0) { decodeParms(uri.substring(qmi + ...
随机推荐
- uva 10780
曾经做过一个类似的 求n!中有多少个质因子m 这里有一个结论 k = n/m+n/(m^2)+n/(m^3)+.... int getnum(int n, int m) { int sum = 0; ...
- cocos2dx Sprite setBlendFunc 使用颜色混合:加算,减算
说明: 图片的混色是游戏的特效的特破口,应用的好,可以大量减少图片的使用量,有专门的介绍资料... setBlendFunc 相关参数,有多种组合方式,需要经验的积累 http://blog.csd ...
- H264码流解析及NALU
ffmpeg 从mp4上提取H264的nalu http://blog.csdn.net/gavinr/article/details/7183499 639 /* bitstream fil ...
- Android:反编译查看源码
下载>>>>>>>>>>>>>>> 使用图形化反编译工具:Androidfby 打开Androidfby中的A ...
- 配置SQL Server 2008服务器
怎么配置SQL Server 2008服务器_百度经验 http://jingyan.baidu.com/article/9faa7231a922c1473c28cb23.html 1.验证安装是否成 ...
- 初始化一台linux server来做项目管理和测试
毕业以后很多没做过这么技术的事情了,不过今年要开始咯. Goal: 练手安装Nginx,并且配置不同的server,后端有Tomcat的(JIRA),有PHP(总得有的),还有Tornado和Node ...
- 转载 .htaccess文件RewriteRule语法规则
详见: http://blog.csdn.net/scchary/article/details/40045807 # -- 位于行首时表示注释. [F] -- Forbidden( ...
- string.Join和string.Concat的区别
源自Difference between String.Join() vs String.Concat() With .NET 4.0, String.Join() uses StringBuilde ...
- poj1226,poj3080
看来以后用pascal的函数要小心了: 简简单单pos其实时间复杂度是二次方级的…… 今天学习的是KMP——字符匹配算法: 这两道题也都很简单,都是为这个算法练手的, 最朴素的匹配显然是穷举起始位置然 ...
- [开发工具] 史上最全系列之开发环境搭建之DDMS
原文链接:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=275774 一.简介 DDMS 的全称是DalvikDebug Mon ...