>  Q&A  >  본문

java - Byte自增问题

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吗
         */

求解,谢谢

PHPzPHPz2742일 전480

모든 응답(5)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-18 10:58:08

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

    으아아아

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:58:08

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

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 10:58:08

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

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 10:58:08

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

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:58:08

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

    회신하다
    0
  • 취소회신하다