前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVASE面试题:自增变量

JAVASE面试题:自增变量

原创
作者头像
程序员小藕
发布2023-10-21 05:04:09
1190
发布2023-10-21 05:04:09
举报
文章被收录于专栏:程序员小藕程序员小藕

JavaSE面试题:自增变量

来源www.runwsh.com/archives/zi…

代码

代码语言:javascript
复制
 public static void main(String[] args) {
        int i=1;
        i=i++;
        int j=i++;
        int k=i + ++i * i++;
        System.out.println("i="+i);
        System.out.println("j="+j);
        System.out.println("k="+k);
	
    }
  • 现在,让我们逐行解释这段代码的执行

1. int i = 1;:创建整数变量 i 并将其初始化为1。(i=1;) 2. i = i++;:这是一个有争议的表达式。首先,它将 i 的当前值1压栈到一个操作数栈中。然后,它将 i 自增1,这就使得变量i=2了,但右边的操作数栈不是没有后续的逻辑运算了,就会将之前压到操作数栈的1赋值给i。所以,i 的值又变为了1。(i=1;) 如果是`i=++i`呢,就是入栈的时候就会将自增后的变量i压入栈中,变量i2,使得出栈的时候也是为2了。 3. int j = i++;:将 i 的当前值1赋给 j,然后将 i 自增1。所以,j 的值是1,而 i 的值变为2。(i=2;j=1) 4. int k = i + ++i * i++;:这是一个复杂的表达式。首先看右边的表达式,操作数栈会先将i变量入栈;也就是2先入栈,这个时候往右走i,是将i自增后的数压入栈中,也就是3,然后再看下一个操作数是i;记住一点的就是,++i压入栈中是将i自增后压入栈中;i++是将i变量压入栈中; ,记住这个规则就是,继续压入栈中的数字是3 。所以现在的操作数栈中的数据从栈低到栈顶依次为:2->3->3;按照运算符操作顺序先乘后加,2+3*3=11。

打印结果:

代码语言:javascript
复制
ini复制代码i=4	
j=1	
k=11

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JavaSE面试题:自增变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档