易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA中的传递都是值传递吗?有没有引用传递呢?

JAVA中的传递都是值传递吗?有没有引用传递呢?
在回答这两个问题前,让我们首先来看一段代码:
Java代码
public class ParamTest {
// 初始值为0
protected int num = 0;
// 为方法参数重新赋值
public void change(int i) {
i = 5;
}
// 为方法参数重新赋值
public void change(ParamTest t) {
ParamTest tmp = new ParamTest();
tmp.num = 9;
t = tmp;
}
// 改变方法参数的值
public void add(int i) {
i += 10;
}
// 改变方法参数属性的值
public void add(ParamTest pt) {
pt.num += 20;
}
public static void main(String[] args) {
ParamTest t = new ParamTest();
System.out.println("参数--基本类型");
System.out.println("原有的值:" + t.num);
// 为基本类型参数重新赋值
t.change(t.num);
System.out.println("赋值之后:" + t.num);
// 为引用型参数重新赋值
t.change(t);
System.out.println("运算之后:" + t.num);
System.out.println();
t = new ParamTest();
System.out.println("参数--引用类型");
System.out.println("原有的值:" + t.num);
// 改变基本类型参数的值
t.add(t.num);
System.out.println("赋引用后:" + t.num);
// 改变引用类型参数所指向对象的属性值
t.add(t);
System.out.println("改属性后:" + t.num);
}
}
public class ParamTest {
// 初始值为0
protected int num = 0;
// 为方法参数重新赋值
public void change(int i) {
i = 5;
}
// 为方法参数重新赋值
public void change(ParamTest T) {
ParamTest tmp = new ParamTest();
tmp.num = 9;
T = tmp;
}
// 改变方法参数的值
public void add(int i) {
i += 10;
}
// 改变方法参数属性的值
public void add(ParamTest pt) {
pt.num += 20;
}
public static void main(String[] args) {
ParamTest t = new ParamTest();
System.out.println("参数--基本类型");
System.out.println("原有的值:" + t.num);
// 为基本类型参数重新赋值
t.change(t.num);
System.out.println("赋值之后:" + t.num);
// 为引用型参数重新赋值
t.change(t);
System.out.println("运算之后:" + t.num);
System.out.println();
t = new ParamTest();
System.out.println("参数--引用类型");
System.ou


相关文档:

100行Java代码构建一个线程池

在现代的操作系统中,有一个很重要的概念――线程,几乎所有目前流行的操作系统都支持线程,线程来源于操作系统中进程的概念,进程有自己的虚拟地址空间以及正文段、数据段及堆栈,而且各自占有不同的系统资源(例如文件、环境变量等等)。与此不同,线程不能单独存在,它依附于进程,只能由进程派生。如果一个进程派生出了 ......

JAVA培训题库 Struts

1. Struts体系结构实现了MVC设计模式的概念,那么它将以下选项中给出的什么分别映射为web应用中的组件?( )
A  View
B  Model
C  ActionServlet
D  Action
E  ActionMapping
F  Controller
参考答案:ABF
2. 在Struts体系结构中,以下哪个由代表系统状态和商业逻辑的Action来构建 ......

Java clone机制

1、 Java对象赋值
Java代码
Employee e1=
new
 Employee(
"李"
); 
//Employee是一个自定义类 
  
Employee e2=e1; //赋值对象 
  
e2.setName("王"
);
//改变对象e2的名字 
  
System.out.println(e1.getName ......

java中的值传递和"引用传递"

值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
"引用传递":也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号