首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java的基本数据类型有关问题

2012-08-17 
java的基本数据类型问题Java codepublic class exec {/*** @param args*/static void add(double x,double

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方法内才有效,并不会影响到传过来的参数。
这和对象传过来地址是不一样的。

热点排行
Bad Request.