日期:2014-05-20  浏览次数:20661 次

java传参问题??
class   h
{
int   f(int   m)
{
return   m*m;
}

}
////////////////////////////////////////////////////////
class   test
{
              public   static   void   main(String[]   args)
{
h   t=new   h();
int   mm=8;
System.out.println(t.f(mm));
}
}
这样可以输出88而
class   test
{
              int   f(int   m)
              {
return   m*m;
              }
 
              public   static   void   main(String[]   args)
{
test   h=new   test();
int   mm=8;
System.out.println(h.f(mm));
}
}
这样只能输出8呀??不懂
还有在java中交换两个整数要怎么写呀??
我试过这样写不行
void   swap(int   a,int   b)
{
int   temp;
temp=a;
a=b;
b=temp;
}
int   m=5,n=6;
传swap(m,n),可是没交换过来呀?不是说传的是引用吗??
希望各位高手帮我想想~~~~谢谢先!!


------解决方案--------------------
Java里面没有传地址,没有传引用,只有传值。
------解决方案--------------------
运行楼主的例子两种情况结果都是64
不知道楼主说一个是88另一个是8,是怎么运行出来的。

//=========================
void swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
int m=5,n=6;
传swap(m,n),可是没交换过来呀?不是说传的是引用吗??
希望各位高手帮我想想~~~~谢谢先!!

----
基本类型是按实际值传递的吧
------解决方案--------------------
我怎么觉得前面两个都是64。。。
------解决方案--------------------
是构造函数的问题.
class test
{
int f(int m)
{
return m*m;
}

public static void main(String[] args)
{
test h=new test();
int mm=8;
System.out.println(h.f(mm));
}
}
*****************************
应该这样:
test h = new test(mm);

------解决方案--------------------
基础类型传值,引用类型传递的是对象的引用。
------解决方案--------------------
基础类型传值,引用类型传递的是对象的引用。

----------------------------------------正确!
------解决方案--------------------
那个程序没有问题

------解决方案--------------------
把f()改成static
------解决方案--------------------
关于Java中参数的传递问题我是这样理解的:无论参数是基本类型还是引用类型传递的都是参数的一个副本。
当参数是基本类型的时候就是传值,这时候传递的是基本类型的一个副本,对副本的修改不会影响到原来的值。
当参数是引用类型的时候,如数组,类等等,就容易产生误解。其实这个时候传递的也是一个副本---引用的副本。即产生一个新的引用(副本引用)(这两个引用指向同一个对象),把副本引用传递给被调方法。正因为是指向同一个对象,所以在被调用的方法里可以对对象的内容进行修改。但是,如果你把副本引用指向一个新的对象,这时候两个引用指向的不再是同一个对象,所以,对其中任一个的修改不会影响到另为一个。
------解决方案--------------------
LZ的程序一点问题都没有啊 都可以完成预想的结果