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 + ...
随机推荐
- win8 优化笔记
win8可以关掉的服务: 以下是小编搜集的可以安全更改为手动启动的服务(按名称排序): Application Experience(启动时为程序处理应用程序兼容性缓存请求) ·Computer Br ...
- HTML可编辑下拉框
<div style="position:relative;"> <select style="width:120px;" onchang ...
- Android 使用httpClient POST 模拟发送 multipart表单内容
使用的环境:apache-mime4j-0.6.jar,httpcore-4.3.2.jar,httpmime-4.3.3.jar try { HttpPost httpPost = new Http ...
- lsof命令总结
1.lsof 简介 lsof 是 linux 下的一个非常实用的系统级的监控.诊断工具.它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~它可以用来列出被各种 ...
- php用于URL的base64
function base64url_encode($plainText) { $base64 = base64_encode($plainText); $base64url = strtr($bas ...
- svn的merge使用例子
先说说什么是branch.按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图: branch存在的意义在于,在不干扰t ...
- Linux信号列表
我们运行如下命令,可看到Linux支持的信号列表: ~$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) ...
- 爬虫实现(hpricot)
1.基本代码 在gemfile中加入gem "hpricot",bundler install之后,在application.rb中require "hpricot&qu ...
- WinCE启动失败的原因与解决办法分析
本文通过一个真实的嵌入式项目进行说明.文中的嵌入式系统用的是ARM处理器+WinCE平台,项目的目的是要把WinCE平台从旧版本移植到WinCE6.0平台上.但结果是这个WinCE系统在启动的时候经常 ...
- 使用SecureCRT上传和下载文件
SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem.ASCII:这是最快的传输协议,但只能传送文本文件.Xmodem:这种传输协议速度较慢,但由于使用了CR ...