java的基本数据类型问题

corner1988 2012-07-03 08:47:58
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? 值类型不是拷贝副本吗?
...全文
72 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyq 2012-07-03
  • 打赏
  • 举报
回复
楼主要知道,在add1方法中的y1,y2只是属于add1的局部变量,它们接收传过来的值2和4,在方法中做的运算,最后得到的y1,y2仍然是add1方法内才有效,并不会影响到传过来的参数。
这和对象传过来地址是不一样的。
nmyangym 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

++y1是先自增1后再参与运算,故f1是经过了自增的,故,f1在运算时为3
[/Quote]
这是错误的,f1不会是3。
zj84604741 2012-07-03
  • 打赏
  • 举报
回复
楼主难道想问的是++i 和i++的区别?
i++ 先使用然后i+1
++i 先i+1然后使用
yqw2010 2012-07-03
  • 打赏
  • 举报
回复
++y1是先自增1后再参与运算,故f1是经过了自增的,故,f1在运算时为3
nmyangym 2012-07-03
  • 打赏
  • 举报
回复
System.out.println(++y1+y2+2.9);
return ++y1+y2+2.9;

return 回去的是10.9. 最后结果12.9.
楼主认为应该是几?
corner1988 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

什么意思 没明白你说的,这个有什么不能理解的吗?
值类型不是拷贝副本吗? -----什么意思?
[/Quote]
我的意思是 为什么输出12.9,
张自强 2012-07-03
  • 打赏
  • 举报
回复
什么意思 没明白你说的,这个有什么不能理解的吗?
值类型不是拷贝副本吗? -----什么意思?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧