返回信息流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++;
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #19697同步于 2011/8/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
输出0还是1,为什么...
buptxiaofeng
2011/8/16镜像同步23 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
fermin那个是因为java是传值调用,所以无法修改i
i=i++那个是这样的过程
i = i++;先将i=0存入栈
对i自加,此时i的值为1
堆栈中的0弹出后赋给i,此时i的值为0
【 在 buptxiaofeng (萧风) 的大作中提到: 】
: public class Inc
: {
: public static void main(String args[])
: ...................
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_1
7: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
10: iload_1
11: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
14: return
【 在 buptxiaofeng (萧风) 的大作中提到: 】
: 标 题: 输出0还是1,为什么...
: 发信站: 北邮人论坛 (Tue Aug 16 16:41:00 2011), 站内
:
: 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++;
: }
: }
: --
:
: ※ 来源:·北邮人论坛 http://bbs.byr.cn·[FROM: 118.229.133.*]
恩,还是直接看指令比较直观
【 在 Thinker (思想者) 的大作中提到: 】
: public static void main(java.lang.String[]);
: Code:
: 0: iconst_0
: ...................