给出的代码:/**
 * @author root
 *
 */
package test.test;public class Test { /**
 * @param args
 */ public Test(){}
public static void main(String[] args) {
// TODO Auto-generated method stub
double myDouble=1.3 ;
Dcrement myDcre=new Dcrement();
myDcre.decre(myDouble);
System.out.println(myDouble);
}
}
class Dcrement{
public Dcrement(){}
public  void decre( double num){
num= num-1.0;
}
}问题:我在main 方法中声明的变量myDouble应该是一个static类型的变量,调用了Dcrement的decre方法将myDoulbe的reference传入,此时的num应该是指向myDouble的,即num指向的地址和为myDouble的静态地址,那在进行了num=num-1.0的计算后,myDouble应该是0.3,可为什么程序的执行结果会是1.3呢?
请高人指点!

解决方案 »

  1.   

    myDouble确实是个局部变量,但也是静态的,不是么?我在Dcrement对象的dcre方法中引用这个静态变量计算应该是对同一个对象地址进行操纵,为什么结果确不对呢?
    若将myDouble声明为全局的静态变量的结果也是一样,真的不明白是为何
      

  2.   

    用类 Double,不要用double,double是基本类型。java中所有的基本类型都是值传递,
    对象才是有引用之说。
    (引用本身也遵循值传递,和c/cpp同出一辙)
      

  3.   

    你要是想在main方法中改变它的话,可以用return返回.