本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
2分35秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器
示例 2 : 对本身进行运算,并赋值 示例 3 : 练习-赋值操作符 示例 4 : 答案-赋值操作符
赋值操作的操作顺序是从右到左
int i = 5+5; 首先进行5+5的运算,得到结果10,然后把10这个值,赋给i public class HelloWorld {
public static void main(String[] args) {
int i = 5+5;
}
}
public class HelloWorld { public static void main(String[] args) { int i = 5+5; } }
+=即自加
i+=2; 等同于 i=i+2; 其他的 -= , *= , /= , %= , &= , |= , ^= , >>= , >>>= 都是类似,不做赘述 public class HelloWorld {
public static void main(String[] args) {
int i =3;
i+=2;
System.out.println(i);
int j=3;
j=j+2;
System.out.println(j);
}
}
public class HelloWorld { public static void main(String[] args) { int i =3; i+=2; System.out.println(i); int j=3; j=j+2; System.out.println(j); } } int i = 1; i+=++i; 心算i的值是?
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
35秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器
i+=++i;
首选运算右边,运算结束后,i的值变为2,++i表达式的值,返回2. 然后再运算 i+=2,在2的基础上+1,最后结果是3 public class HelloWorld {
public static void main(String[] args) {
int i = 1;
i+=++i;
// 2
// 3
System.out.println(i);
}
}
public class HelloWorld { public static void main(String[] args) { int i = 1; i+=++i; // 2 // 3 System.out.println(i); } }
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2021-07-04
小习题:+=以及++
11 个答案
hs20040602 跳转到问题位置 答案时间:2024-06-09 码农人 跳转到问题位置 答案时间:2023-11-19 3
德州king 跳转到问题位置 答案时间:2023-01-02 3
ybysl 跳转到问题位置 答案时间:2022-11-05 路子 跳转到问题位置 答案时间:2022-09-24 3 张遥23 跳转到问题位置 答案时间:2022-08-07 i+=5;
其实就是i=i+5,并不是I = 5+I
DRS001 跳转到问题位置 答案时间:2022-01-14 3
Sakurazg 跳转到问题位置 答案时间:2022-01-08 7
炽热流星 跳转到问题位置 答案时间:2021-12-22 努力的蜗牛i 跳转到问题位置 答案时间:2021-10-30 3 Txp_123456 跳转到问题位置 答案时间:2021-10-22 3
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-10-22
不是说赋值的操作是从右到左吗,那i不应该变成2+2吗
9 个答案
A|Ace 跳转到问题位置 答案时间:2022-09-13 ++i并没有单独成行的运算,结果 没有被赋值,就是i的值还是没变,算式上就是i=1+2
练_java123 跳转到问题位置 答案时间:2022-08-29 3
雨琪 跳转到问题位置 答案时间:2022-05-28 这个应该要考虑优先级问题吧,++的优先级要比+=的优先级要高
芬达味橘猫 跳转到问题位置 答案时间:2022-04-25 int i = 1;
i[1]+=++i[2];
就是1+=2结果为3
攻sir 跳转到问题位置 答案时间:2021-04-22 i+ ++i和 ++i +i
是两种结果
kk靓女bb 跳转到问题位置 答案时间:2021-03-11 i=1
i +=++i
1 +=++1
1+=2
=3
黑黑是仙女 跳转到问题位置 答案时间:2021-01-14 int i = 1;
i+=++i; 理解 就是 i = i + ++i
解析:抛开静态情况。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。
首先代码执行过程是:
0: iconst_1 将常量1压入操作数栈。此时栈顶值为1.
1: istore_1 将栈顶元素弹出(值1),存入到局部变量表index为1的位置。这里一般index为0的位置存储的是当前实例。想象下局部变量结构【当前实例,1】
2: iload_1 将局部变量表index的位置值复制一份到操作数栈。栈顶值为1
3: iinc 1, 1 iinc就是进行自增操作 第一个1是操作局部变量表index为1的值,第二个值表示增加的数量 ,也就是++i 等价于i = i+1;1+1=2.把结果存放到局部变量表index为1里面
6: iload_1 将局部变量index为1的值(此刻为2) 存一份到操作数栈。此时操作栈存了 之前的1 和这次的2
7: iadd 这个命令是将操作栈里前俩个值相加 1+2 =3 ,把结果放在栈顶
8: istore_1 将栈顶元素弹出(值3) 存到局部变量index为1的位置 也就是i = 3
个人理解
mg_ 跳转到问题位置 答案时间:2020-12-23 4 优雅的飞雪 跳转到问题位置 答案时间:2020-10-28 从右到左你可以这样理解, i+=++i ; 解析就是i= i + (++i); 等于号左边的看作是左边的整体, 等于号右边的看作是右边的整体, 整体上还是从左到右的, 只不过等于号赋值操作是从右到左
i = i+++i; //→ ← →
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-08-31
答案可不可以这样理解
2020-06-06
答案3
2020-04-11
我觉得练习里应该理解成自增和赋值的过程分开了
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 14 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|