java - Byte自增问题
PHPz
PHPz 2017-04-18 10:56:08
0
5
499
Byte a = 123;
        a++;
        System.out.println(a);// 124
        /*
         * 上面的结论是: a++的时候首先是 创建一个Byte对象124,然后将a引用指向这个Byte 124对象,这个解释有问题吗?
         */

        Byte b = 126;
        b = b++;
        System.out.println(b);// 126
        /*
         * 根据第一段代码的执行结果;
         * b=b++,的执行操作是首相将b引用赋值给b引用,所以没有改变,然后将b引用所指向的对象自增(这个实现的过程是创建一个对象值为127,
         * 然后让b引用指向这个127),如果这样理解,结果不应该是127吗
         */

求解,谢谢

PHPz
PHPz

学习是最好的投资!

모든 응답(5)
大家讲道理

b = b++: C++를 아는 경우 ++의 자체 증가 구현을 참조하면 왜 126인지 이해할 수 있을 것입니다

으아아아

b는 연산이 증가되기 전의 temp와 같다고 이해할 수 있습니다

Ty80

++, --는 별도로 작성해야 하며, 그렇지 않으면 본인에게 문제가 발생합니다.
i=i+++++i같은 질문엔 경멸밖에 안되는데...

小葫芦

해결됨
http://blog.csdn.net/brooksyc...
댓글 달기

迷茫

++b와 b++의 차이는 사실 쓸모가 없습니다

巴扎黑

Java 스택 프레임에는 지역 변수 테이블과 피연산자 스택이 포함됩니다. ++ 증분 연산은 로컬 변수 테이블의 값에 대한 직접 연산입니다. i=i++인 경우 먼저 지역 변수 테이블에 i를 추가합니다. 피연산자 스택에 푸시한 후 지역 변수 테이블의 i에 1을 더해 127이 됩니다. 그런 다음 피연산자 스택의 i(126)를 지역 변수 테이블의 i에 다시 쓰고 127 데이터를 덮어 126으로 변경합니다. . ++i의 순서는 다릅니다. 먼저 지역 변수 테이블에서 i를 증가시킨 다음 피연산자 스택에 추가합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿