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

为何我java函数返回不了值
class   A{


public   a{
long   name   =0;
B.b(name);

System.out.println( "name: "   +   name);
}


}


class   B{
public   static   b(long   name){

name   =   5;
}

}


  为什么name的值还是0,而不是5呢

------解决方案--------------------
你的name是变量,不是类对象.你虽然调用了静态方法,但是不影响你A类中的变量.
------解决方案--------------------
如果要想改变值要用引用传递,值传递是不行的,建议在看看JAVA中这块的东西(参数传递)
------解决方案--------------------
如果是传递long,int等基本类型变量,则无法完成你所想的.
对于基本类型变量,处理方式跟C++一样,形参无法改变实参.
------解决方案--------------------
A类中的变量name 和 B类方法b中的name 是2个不同的变量 对于B类b方法中的变量name修改值对于A类中的变量name 是不可见的 所以A类中的name还是0 如果想要把A类中的name变成5 需要把值返回就可以了
class test
{
public static void main(String[] args)
{
System.out.println( "Hello World! ");
A aa=new A();
}
}
class A{
public A(){
long name =0;
name=B.b(name);
System.out.println( "name: " + name);
}

}
class B{
public static long b(long name){
return name = 5;
}

}
LZ写完之后没编译吧? 提醒一下 构造方法必须和类名一致 JAVA中严格区分大小写 还有就是方法如果有返回值必须指定返回值类型 没返回值要加void关键字

------解决方案--------------------
class A{


public A()
{
long name =0;
name=B.b(name);

System.out.println( "name: " + name);
}
}


class B{
public static long b(long name){

name = 5;
return name;
}

}
class Test
{
public static void main(String[]args)
{
A a=new A();
}
}
}