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 + ...
随机推荐
- sublime 配置g++
资料来源: http://blog.csdn.net/leonsc/article/details/5853614 http://www.cnblogs.com/zhenglichina/archiv ...
- python url编码
1.quote:使用适合URL内容的转义序列替换String中的特殊字符. 2.quote_plus:调用quote并使用“+”替换所有空格 3.unquote:使用转义字符的单字符对应物替换'%xx ...
- eclipse安装Log4E插件以及简单使用
一. Log4E插件下载 下载地址:http://log4e.jayefem.de/content/view/3/2/ 二.安装Log4E插件 将下载下来的压缩包解压缩,如下图所示: 解压缩生成的[d ...
- android应用崩溃的调试方法(c++ lib so文件库崩溃)
android调试工具addr2line使用: 1.将ndk中的arm-linux-androideabi-addr2line可执行文件的路径加入配置文件~/.bashrc中,例如: export P ...
- OpenStack 部署运维实战
http://www.ibm.com/developerworks/cn/cloud/library/1408_zhangxl_openstack/#icomments 本文为您介绍了网易公司基于 O ...
- java使用redis
1.redis和memecache这种缓存框架,都分为服务器端和客户端. 我们在项目中使用,相当于客户端,要引入客户端使用redis的jar包 首先你需要下载驱动包,下载 jedis.jar,确保下载 ...
- POJ1850——Code(组合数学)
Code DescriptionTransmitting and memorizing information is a task that requires different coding sys ...
- 最短路径算法之一——Floyd算法
Floyd算法 Floyd算法可以用来解决任意两个顶点之间的最短路径问题. 核心公式为: Edge[i][j]=Min{Edge[i][j],Edge[i][k]+Edge[k][j]}. 即通过对i ...
- Eclipse如何导出可执行jar包
在编写shell脚本时用到了可执行的jar包,而jar包从Eclipse中导出时需要同时导出jar文件以及库文件夹,具体导出方式如下: (1)点击主方法所在的java,运行java applicati ...
- P44、面试题4:替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”.例如输入“We are happy.”,则输出“We%20are%20happy.”. 如果用java string类中提供的replace ...