Java에서 ++ x와 x ++ 사이에 차이점이 있습니까?
답변
++ x는 사전 증가라고하고 x ++는 사후 증가라고합니다.
int x = 5, y = 5;
System.out.println(++x); // outputs 6
System.out.println(x); // outputs 6
System.out.println(y++); // outputs 5
System.out.println(y); // outputs 6
답변
예
++ x는 x 값을 증가시킨 다음 x를 반환합니다.
x ++는 x 값을 반환 한 다음 증가합니다.
예:
x=0;
a=++x;
b=x++;
코드가 실행 된 후 a와 b는 모두 1이되지만 x는 2가됩니다.
답변
이를 접미사 및 접두사 연산자라고합니다. 둘 다 변수에 1을 더하지만 명령문의 결과에는 차이가 있습니다.
int x = 0;
int y = 0;
y = ++x; // result: y=1, x=1
int x = 0;
int y = 0;
y = x++; // result: y=0, x=1
답변
예,
int x=5;
System.out.println(++x);
인쇄 6
하고
int x=5;
System.out.println(x++);
인쇄 5
됩니다.
답변
나는 그것의 최근 dup 중 하나에서 여기에 도착했다. 그리고이 질문은 대답 이상이지만, 나는 코드를 디 컴파일하고 “아직 다른 대답”을 추가하는 것을 도울 수 없었다 🙂
정확하고 (아마도 약간 현명한)
int y = 2;
y = y++;
다음으로 컴파일됩니다.
int y = 2;
int tmp = y;
y = y+1;
y = tmp;
javac
이 Y.java
수업의 경우 :
public class Y {
public static void main(String []args) {
int y = 2;
y = y++;
}
}
그리고 javap -c Y
, 다음 jvm 코드를 얻습니다 ( Java Virtual Machine Specification 의 도움으로 주요 방법에 대해 주석을 달 수 있음 ).
public class Y extends java.lang.Object{
public Y();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_2 // Push int constant `2` onto the operand stack.
1: istore_1 // Pop the value on top of the operand stack (`2`) and set the
// value of the local variable at index `1` (`y`) to this value.
2: iload_1 // Push the value (`2`) of the local variable at index `1` (`y`)
// onto the operand stack
3: iinc 1, 1 // Sign-extend the constant value `1` to an int, and increment
// by this amount the local variable at index `1` (`y`)
6: istore_1 // Pop the value on top of the operand stack (`2`) and set the
// value of the local variable at index `1` (`y`) to this value.
7: return
}
따라서 드디어 :
0,1: y=2
2: tmp=y
3: y=y+1
6: y=tmp
답변
컴퓨터가 실제로하는 일을 고려할 때 …
++ x : 메모리에서 x로드, 증가, 사용, 메모리에 다시 저장.
x ++ : 메모리에서 x를로드하고, 사용하고, 증가시키고, 메모리에 다시 저장합니다.
고려 : a = 0 x = f (a ++) y = f (++ a)
여기서 함수 f (p)는 p + 1을 반환합니다.
x는 1 (또는 2)입니다.
y는 2 (또는 1)입니다.
그리고 거기에 문제가 있습니다. 컴파일러 작성자가 검색 후, 사용 후 또는 저장 후 매개 변수를 전달 했습니까?
일반적으로 x = x + 1을 사용하십시오. 훨씬 간단합니다.
답변
Java에서는 x ++와 ++ x 사이 에 차이가 있습니다.
++ x는 접두사 형식입니다.
변수 표현식을 증분 한 다음 표현식에서 새 값을 사용합니다.
예를 들어 코드에서 사용되는 경우 :
int x = 3;
int y = ++x;
//Using ++x in the above is a two step operation.
//The first operation is to increment x, so x = 1 + 3 = 4
//The second operation is y = x so y = 4
System.out.println(y); //It will print out '4'
System.out.println(x); //It will print out '4'
x ++는 접미사 형식입니다.
변수 값은 표현식에서 처음 사용 된 다음 연산 후에 증가합니다.
예를 들어 코드에서 사용되는 경우 :
int x = 3;
int y = x++;
//Using x++ in the above is a two step operation.
//The first operation is y = x so y = 3
//The second operation is to increment x, so x = 1 + 3 = 4
System.out.println(y); //It will print out '3'
System.out.println(x); //It will print out '4'
이것이 분명하기를 바랍니다. 위의 코드를 실행하고 재생하면 이해하는 데 도움이됩니다.