다음 코드가 있습니다.
public class Tests {
public static void main(String[] args) throws Exception {
int x = 0;
while(x<3) {
x = x++;
System.out.println(x);
}
}
}
우리는 그가 just x++
또는 을 작성 했어야한다는 것을 알고 x=x+1
있지만, x = x++
우선 x
그 자체에 귀속 하고 나중에 증가 시켜야 합니다. 왜 가치를 x
계속 유지 0
합니까?
--최신 정보
바이트 코드는 다음과 같습니다.
public class Tests extends java.lang.Object{
public Tests();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]) throws java.lang.Exception;
Code:
0: iconst_0
1: istore_1
2: iload_1
3: iconst_3
4: if_icmpge 22
7: iload_1
8: iinc 1, 1
11: istore_1
12: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
15: iload_1
16: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
19: goto 2
22: return
}
이해하려고 하는 지침 에 대해 읽겠습니다 ...
x++
는 증가 후입니다. 결과x=
할당 ; 결과 의는 원래이다 (그리고 증가의 부작용이있다,하지만 결과는 변경되지 않습니다)이이로 해석 될 수 있도록,x++
x
var tmp = x; x++; x = tmp;