java中关于引用传递的问题
puyblic class TempTest{
private void test1(A a){
a.age=20;
System.out.println("test1方法中的age="+a.age);
}
public static void main(String[] args){
TempTest t=new TempTest();
A a=new A();
a.age=10;
t.test1(a);
System.out.println("main方法中的age="+a.age);
}
}
为何结果20,20. 但是在test1方法中添加一行 A a=new A();结果却是10和20,哪位帮忙解决下,想了很久不明白
20 20 很明显啊 a.age=20 改了他的值
至于在test1方法中添加一行 A a=new A(); 这样写不会报错? 参数 已经是 test1(A a)了.
t.test1(a);
这个方法才调用时,传的是a的引用地址,例如为:0x00001,
而在test1方法中,改变的是0x00001引用里边的东西。。。
同意.. ,回复内容太短
首先,楼主要明确一个概念:JAVA只有值传递,没有引用传递!
分两种情况:
1:如果参数是基本数据类型的话,函数内部对参数做修改,不会影响外部原参数。
因为基本数据类型在传入函数时,java会做个copy动作,所以在内部修改此参数,只是修改的copy副本
2:如果参数是对象类型的话,函数内部对对象的域做的修改,会改变外部原对象的域。
因为参数是对象,java会copy此对象的句柄地址为一个新的副本,对此副本指向的对象做域的更改,自然会更改到原对象。
根据以上两种情况,java都会做个copy副本的动作,所以是“值传递”
不知道我解释的明白吗?
你这程序错误也太多了吧~~~~
相关问答:
我想用Java写一个程序,就是我想在运行代码后,在指定的时间打开某程序,例如我运行代码后,讲在12:00打开"D:\Program Files\Tencent\QQ2009\Bin\QQ.exe"这个程序,求高人指点。还有可能的话在指定的时间 ......
<html><head><title>[@title]</title>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<script language='javascript'>
function diyCheck ......
我已经按照教程上配置tomcat的server.xml
<Context path = "/POS" docBase = "POS" debug = "5" reloadable = "true" crossContext = "true" workDir = &quo ......
本人正在用Java做一个C/S架构的项目,
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......
rt,我试了网上直连Acces数据库的方法,windows下没有问题,但是在linux下不行,谁能给点提示?谢谢
你怎么连的?
Acces数据库..
你怎么练的呢?
Java code:
static String DBDRIVER = "sun.jd ......