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

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实现定时执行某程序 - Java / Java SE

我想用Java写一个程序,就是我想在运行代码后,在指定的时间打开某程序,例如我运行代码后,讲在12:00打开"D:\Program Files\Tencent\QQ2009\Bin\QQ.exe"这个程序,求高人指点。还有可能的话在指定的时间 ......

jsp页面中字体变色问题 - Java / Web 开发

<html><head><title>[@title]</title>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<script language='javascript'>
function diyCheck ......

mysql连接tomcat - Java / Web 开发

我已经按照教程上配置tomcat的server.xml
<Context path = "/POS" docBase = "POS" debug = "5" reloadable = "true" crossContext = "true" workDir = &quo ......

C/S项目架构设计----求助 - Java / Java SE

本人正在用Java做一个C/S架构的项目, 
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。 
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......

linux不能访问access - Java / Java EE

rt,我试了网上直连Acces数据库的方法,windows下没有问题,但是在linux下不行,谁能给点提示?谢谢
你怎么连的?

Acces数据库..
你怎么练的呢?

Java code:

static String DBDRIVER = "sun.jd ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号