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

java 对象类型与基本数据类型传参的比较

2014-07-24 19:50 316 查看
今天记录一下传参方式,看下面一个简单的对象变量的传递。

public class Method1{
public static void main(String[] args){
A a = new A();
a.name = "我的名字";
System.out.println(a);
System.out.println(a.name);
Method1 method1 = new Method1();
method1.changeA(a);
System.out.println(a.name);
}

public A changeA(A a){
a.name = "利用方法成功改变A";
System.out.println(a);
return a;
}
}

class A{
public String name;
}


运行结果如图1所示



图1

通过运行结果,我们可以得出。首先,传递的参数的值改变了,其次,它们的哈希值(16进制)相同,即它们指向同一块内存。所以它们只进行了值得传递,只存在一份数据,并没有创建副本。

接下来,我们测试基本数据类型是不是也是进行值传递(对象传递)。

public class Method1{
public static void main(String[] args){
int i = 100;
System.out.println("i ="+ i);

Method1 method1 = new Method1();
method1.changeInt(i);
System.out.println("new i = "+i);
}

public int changeInt(int i){
i = 500;
return i;
}

}


运行结果如图2所示



图2

这验证了基本数据类型的特殊性,它们进行传递的时候会复制出一份副本进行操作,所以导致对整形i的操作无效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: