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的程序一点问题都没有啊 都可以完成预想的结果