java – x = x相当于x = 2x 1:为什么?
发布时间:2020-12-15 04:49:38 所属栏目:Java 来源:网络整理
导读:这个问题只是好奇心:我想知道在x = x行之后某些int x的值是多少 所以我试过了: int x=10;x+=++x;System.out.println(x); 它打印出来: 21 经过一些其他值的测试后,似乎相当于x = 2x 1.为什么?此行是否由编译器解释为字节操作? (顺便说一句,x = x似乎等于
这个问题只是好奇心:我想知道在x = x行之后某些int x的值是多少
所以我试过了: int x=10; x+=++x; System.out.println(x); 它打印出来: 21 经过一些其他值的测试后,似乎相当于x = 2x 1.为什么?此行是否由编译器解释为字节操作? (顺便说一句,x = x似乎等于x = 2x). 我不认为这是我在项目中使用的东西,但我很想知道为什么我得到这个结果. 谢谢你的任何解释或提示 编辑:首先,感谢您的回答 我知道=运算符是如何工作的,以及x和x,但由于某种原因,(完全逻辑和明显的)结果对我来说似乎很奇怪 解决方法
它的计算方法是
>步骤1:x = x x 这是证明: 我创建了一个MainClass如下: public class MainClass{ public static void main(String...s){ int x = 10; x += ++x; } } 然后使用javap -c MainClass检查字节码 public static void main(java.lang.String...); Code: 0: bipush 10 // push 10 onto stack 2: istore_1 // store 10 in local variable 1 3: iload_1 // load local variable 1 (now 10) back to stack 4: iinc 1,1 //increment local variable 1 by 1 7: iload_1 // load local variable 1 (now 11) back to stack 8: iadd // add top 2 variable on stack ( 10 and 11) 9: istore_1 // store 21 to local variable 1 10: return } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – Spliterator – size vs subsized flags
- java – 有没有办法强制JVM在单个处理器或Core上运行
- Java多线程的Semaphore
- 使用for循环写入行一个一个在文件中使用java
- 如何正确使用FindBugs的@CheckForNull,@ Nonull和@Nullable
- Mybatis中注解@MapKey的使用详解
- Java在方法中发现了switch语句.该方法需要返回一些东西吗?
- java – 为什么matlabcontrol在代理创建时中断调用线程?
- java – 如何递归flatMap流?
- java – 如何在Spring Boot中使用YAML属性和构造函数注入?