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

java的基本数据类型问题
Java code
public class exec {

    /**
     * @param args
     */
      static void add(double x,double y){
          double z;
          z=x+y;
          System.out.println("z="+z);
          
      }
      static double add1(double y1,double y2){
          System.out.println(++y1+y2+2.9);
           return ++y1+y2+2.9;
      }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
           double f1=2,f2=4;
           add(f1,add1(f1,f2));
    }

}


输出为 9.9 和12.9 
问题 为什么是12.9? 值类型不是拷贝副本吗?

------解决方案--------------------
System.out.println(++y1+y2+2.9);
return ++y1+y2+2.9;

return 回去的是10.9. 最后结果12.9.
楼主认为应该是几?
------解决方案--------------------
++y1是先自增1后再参与运算,故f1是经过了自增的,故,f1在运算时为3
------解决方案--------------------
楼主难道想问的是++i 和i++的区别?
i++ 先使用然后i+1 
++i 先i+1然后使用
------解决方案--------------------
探讨

++y1是先自增1后再参与运算,故f1是经过了自增的,故,f1在运算时为3

------解决方案--------------------
楼主要知道,在add1方法中的y1,y2只是属于add1的局部变量,它们接收传过来的值2和4,在方法中做的运算,最后得到的y1,y2仍然是add1方法内才有效,并不会影响到传过来的参数。
这和对象传过来地址是不一样的。