TestRef
来源:互联网 发布:微信软件登陆 编辑:程序博客网 时间:2024/06/11 12:37
package com.jasonhuang.test;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
/** *//**
* 测试Java中是传值还是传引用
*
* @author Jason Huang
*/
public class TestRef ...{
/** *//**
* Log4j日志
*/
private static Logger logger = Logger.getLogger(TestNIO.class);
/** *//**
* @param args
*/
public static void main(String[] args) ...{
// 设置日志记录级别为INFO
logger.setLevel(Level.INFO);
// 初始化实例v1
ValueObject v1 = new ValueObject(1, "Test 1");
logger.info("v1 before: " + v1);
// 方法调用v1的自身方法对v1更改内部变量
changeValue1(v1);
// 可证明,v1确实在方法中被改变了。
logger.info("v1 after: " + v1);
// 初始化实例v2
ValueObject v2 = new ValueObject(2, "Test 2");
logger.info("v2 before: " + v2);
// 方法对v2重新赋值
changeValue2(v2);
// 可证明,方法没有改变v2的原始值。
logger.info("v2 after: " + v2);
}
/** *//**
* 使用vo自身的函数对其内部数据进行改变是有效的,函数外可反映出来。这种object称为可变的(mutable)。
*
* @param vo
*/
private static void changeValue1(ValueObject vo) ...{
vo.setName("Test A");
logger.info("c1: " + vo);
}
/** *//**
* 在函数内给vo重新赋值不会改变函数外的原始值。
*
* @param vo
*/
private static void changeValue2(ValueObject vo) ...{
vo = new ValueObject(2, "Test B");
logger.info("c2: " + vo);
}
}
/** *//**
* 实体类
*/
class ValueObject ...{
int id = 0;
String name = null;
public ValueObject(int id, String name) ...{
this.id = id;
this.name = name;
}
public int getId() ...{
return id;
}
public void setId(int id) ...{
this.id = id;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
@Override
public String toString() ...{
return super.toString() + String.format(", id: %d, name: %s", id, name);
}
}
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
/** *//**
* 测试Java中是传值还是传引用
*
* @author Jason Huang
*/
public class TestRef ...{
/** *//**
* Log4j日志
*/
private static Logger logger = Logger.getLogger(TestNIO.class);
/** *//**
* @param args
*/
public static void main(String[] args) ...{
// 设置日志记录级别为INFO
logger.setLevel(Level.INFO);
// 初始化实例v1
ValueObject v1 = new ValueObject(1, "Test 1");
logger.info("v1 before: " + v1);
// 方法调用v1的自身方法对v1更改内部变量
changeValue1(v1);
// 可证明,v1确实在方法中被改变了。
logger.info("v1 after: " + v1);
// 初始化实例v2
ValueObject v2 = new ValueObject(2, "Test 2");
logger.info("v2 before: " + v2);
// 方法对v2重新赋值
changeValue2(v2);
// 可证明,方法没有改变v2的原始值。
logger.info("v2 after: " + v2);
}
/** *//**
* 使用vo自身的函数对其内部数据进行改变是有效的,函数外可反映出来。这种object称为可变的(mutable)。
*
* @param vo
*/
private static void changeValue1(ValueObject vo) ...{
vo.setName("Test A");
logger.info("c1: " + vo);
}
/** *//**
* 在函数内给vo重新赋值不会改变函数外的原始值。
*
* @param vo
*/
private static void changeValue2(ValueObject vo) ...{
vo = new ValueObject(2, "Test B");
logger.info("c2: " + vo);
}
}
/** *//**
* 实体类
*/
class ValueObject ...{
int id = 0;
String name = null;
public ValueObject(int id, String name) ...{
this.id = id;
this.name = name;
}
public int getId() ...{
return id;
}
public void setId(int id) ...{
this.id = id;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
@Override
public String toString() ...{
return super.toString() + String.format(", id: %d, name: %s", id, name);
}
}
- TestRef
- Visual Studio .Net 2003:安装程序检测到另一个程序要求计算机重新启动...
- 国庆长假好读书
- 六祖大師法寶壇經
- 自动完成
- 2006年毕业生薪资大起底
- TestRef
- JavaEE5 Learning-JSP
- GB编码转换为UTF8编码
- 2006-09-28 墨子的双眼皮
- 自动完成【纯HTML+Javascript】
- VB6求两个字符串最长公共子串的问题
- 與古禪師談、求長生不老術
- 今年保研,还真奇怪,保44,结果45报名考试,一人缺考.呵呵
- A macro to get all interior colorindex has been used in thisworkbook