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 + ...
随机推荐
- [转载]LINQ 中的 select
下面通过一些例子来说明怎样使用select,参考自:LINQ Samples 1. 可以对查询出来的结果做一些转换,下面的例子在数组中查找以"B"开头的名字,然后全部转成小写输出 ...
- Struts2自定义拦截器实例—登陆权限验证
版本:struts2.1.6 此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面. ...
- hdu 3449
有依赖的背包,转化成01背包来做: #include<iostream> #include<cstdio> #include<cstring> #include&l ...
- hdu 1087
动规 d[i]记录以第 i 个数结尾的最大值 #include <cstdio> #include <algorithm> #include <cstring> ...
- Nagios+msn+fetion自定义时间发送报警消息
转自http://blog.csdn.net/deccmtd/article/details/6063467 Nagios+fetion发送手机报警使用了几个月.每次报警短信来都要看下手机.感觉麻烦. ...
- JSON用法简介
[JSON简介] jsoncpp 主要包含三种类型的 class:Value.Reader.Writer.jsoncpp 中所有对象.类名都在 namespace Json 中,包含 json.h 即 ...
- CI框架大纲总结
一.大纲 1.codeigniter框架的授课内容安排 2.codeigniter框架的简介 |-----关于框架的概念 |-----使用CI框架的好处 |-----为什么选择CI框架 3.codei ...
- pogo pin连接器塑胶部件的缺陷及产生原因分析
pogo pin连接器塑胶部件异色.褪色产品的颜色与标准颜色不同的现象.与树脂颜色不同为异色:注塑后颜色发生改变的现象为变色. 产生的主要原因:1.着色错误(色粉有误) 2.树脂污染3.过多使用粉碎品 ...
- Qt5官方demo解析集(36个)
http://blog.csdn.net/cloud_castle/article/category/2123873 http://blog.csdn.net/cloud_castle/article ...
- Android 签名(1)为什么要签名
所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序 签名可以: 1,用特权,2完整性鉴别,3安全保证, 1,专用权限或特权要签名 一些特权要经签名才允许.签名可用:S ...