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