您的位置:首页 > 编程语言 > Java开发

【JAVA】java中方法传参的一点个人理解

2014-03-12 15:24 411 查看
对于java中方法传参的理解一直有些疑惑,今天写了个测试程序整理了下思路。

import javax.swing.text.ChangedCharSetException;

public class StringTest {

/**
* @param args
*/
public static void main(String[] args) {
int a = 3;
System.out.println("first a:"+a);
change(a);
System.out.println("final a:"+a);

A ao = new A();
ao.a = 3;
System.out.println("first ao:"+ao.a);
change(ao);
System.out.println("final ao:"+ao.a);

Integer aI = 3;
System.out.println("first a:"+aI);
changeO(aI);
System.out.println("final a:"+aI);

A aO = new A();
aO.a = 3;
System.out.println("first aO:"+aO.a);
changeO(aO);
System.out.println("final aO:"+aO.a);
}

private static void change(int i){
i = 5;
}
private static void changeO(Integer i){
i = 5;
}
private static void change(A i){
i.a = 5;
}

private static void changeO(A i){
i = new A();
i.a = 5;
}

static class A{
int a;
}
}


输出结果:

first a:3
final a:3
first ao:3
final ao:5
first a:3
final a:3
first aO:3
final aO:3
java分为传值和传引用两种传参方式,概念太多容易混淆理解。

根本原因是java对基本类型和实体类在内存中存储方式不同,导致传参处理也不相同。基本类型和对象引用是放在栈中,而对象的成员变量则存放在堆里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: