解决方法:
1,你把fermin()内的参数换一下,看起来或许好点:
void fermin(int j) { j++; }
2,可以改变下fermin()方法的实现:
public int fermin(int i) { return ++i;}
这样应该可以了额~作者: 张頔 时间: 2012-6-3 21:56
public class Inc
{
public static void main(String args[])
{
Inc inc = new Inc();
int i = 0;
inc.fermin(i); //
i=i++; //换成++i 就会的到2
System.out.println(i); //因为是i++所以返回的是1并不是加完之后得的2
}
void fermin(int i) //你这个方法没有返回值 而且 这个i 并不是主函数中的 i 注意局部变量
{
i++;
}
}
更改之后的代码
public class Inc
{
public static void main(String args[])
{
Inc inc = new Inc();
int i = 0;
i = inc.fermin(i);
i=++i;
System.out.println(i);
}
int fermin(int j)
{
++j;
return j ;
}
}
这样结构就是2了作者: 唐辉辉 时间: 2012-6-3 22:02
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++;
}
}
当程序走到 inc.fermin(i); 时,会调用fermin方法,把i的做为参数传入。并没有返回。
i=i++; 此时右边的 i 在没有自增之前将值赋给了左边的 i ,之后再自增。所以i仍然还是等于0.作者: 葛奎 时间: 2012-6-4 14:35
1,这里的void fermin(int i)方法是Inc类的成员方法
2,它是Inc inc 对象所具备的行为方法,可以对成员变量进行操作.
3,void fermin(int i)中的 i 是局部变量,它的生命周期只局限于这个函数开始的结束
4,执行inc.fermin(i)时;调用了void fermin(int i)方法,相当于把当前 i 的值赋给了 fermin函数中的参数,也就是
int i=i(为了区分,下面写成i1,i2即 i1=i2), 执行方法体的时候,i1++ 此时,i1的值为1
但是当该函数执行完后,i1自动销毁. 其实这个函数并没有对i2做任何的赋值操作
5,如果想对 i 进行操作的话,应该让它的生命周期更长,定义成成员变量
6,i=i++;这里是对局部变量 i 的赋值,i++操作符含义是执行完表达式再进行赋值
相当于System.out.println(i++);