程序:
public class Inc
{
public static void main(String args[])
{
Inc inc = new Inc();
int i = 0;
inc.fermin(i);
i=i++;
System.out.println(i);
}
void fermin(int i)
{
i++;
}
}
输出:0
分析:
fermin那个是因为java是传值调用,所以无法修改i。(注意形参和实参)
i = i++那个是这样的过程:
i = i++;先将i=0存入栈;
对i自加,此时i的值为1;
堆栈中的0弹出后赋给i,此时i的值为0。
(在重写+=运算符的时候是这样的:后缀则将原对象直接自加,返回。前缀则先做一个对原有对象的拷贝,然后将原有对象自加。将拷贝对象返回,这样左值会得到旧值。)
注意:
在C++,C里面输出为1。
public class Inc
{
public static void main(String args[])
{
Inc inc = new Inc();
int i = 0;
inc.fermin(i);
i=i++;
System.out.println(i);
}
void fermin(int i)
{
i++;
}
}
输出:0
分析:
fermin那个是因为java是传值调用,所以无法修改i。(注意形参和实参)
i = i++那个是这样的过程:
i = i++;先将i=0存入栈;
对i自加,此时i的值为1;
堆栈中的0弹出后赋给i,此时i的值为0。
(在重写+=运算符的时候是这样的:后缀则将原对象直接自加,返回。前缀则先做一个对原有对象的拷贝,然后将原有对象自加。将拷贝对象返回,这样左值会得到旧值。)
注意:
在C++,C里面输出为1。
i=i++;由编译器决定。
i=i++ ; i=++i 这种代码要避免。