面试题(一)自增变量

1 int a  = 1;
2 a = a++;
3 int b = a++;
4 int c = a + ++a * a++;
5 System.out.println(a);//4
6 System.out.println(b);//1
7 System.out.println(c);//11

自增变量:解析

  第一步:int a = 1中,将a放入到局部变量表中,此时为a=1。

  第二步:a=a++中,先算右边部分,由于++在右边,所以先将a的值压入到操作数栈中为1,然后a进行自增操作,局部变量表中a的值变成了2.

  第三步:再算左边部分,此时将操作数栈中的值1,赋值给a,所以局部变量表中a的值为1.操作数栈中没有数据了。

  第四步:int b = a++中,跟第二步一样,b的值为1,此时a的值进行了自增后为2,保存在了操作数栈中。

  第五步:int c = a + ++a * a++中,先算右边部分,第一个a为2,第二个a为3,第三个a为3,然后在进行自增操作,a变成4,都存在了栈中,然后进行累加操作结果为11,赋值给c,c的值为11。

  所以最终的结果:a=4,b=1,c=11。

原文地址:https://www.cnblogs.com/in-the-game-of-thrones/p/11391293.html

时间: 2024-10-11 11:37:32

面试题(一)自增变量的相关文章

01_javaSE面试题:自增变量

开启刷面试题,都是根据视频进行刷面试题的 自增变量,只要记住两点 i++ 是先赋值后计算 ++i 是先计算后赋值 看下面的代码 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); 这里要注意两点 自增变量的算法 运算

JavaSE 笔试题: 自增变量

JavaSE 笔试题 自增变量 public class Test { 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); }

获取ACCESS数据库中自增变量的值

/// <summary> /// 获取自增变量值 /// </summary> /// <returns>自增变量值</returns> public int getReturnIdentity() { //Conn_Open(); string strCMDtext = @"select @@identity"; OleDbCommand cmd_sql = new OleDbCommand(strCMDtext, conn_1);

织梦dedecms自增变量autoindex标签的使用(转)

织梦dedecms自增变量autoindex标签的使用 例1: {dede:arclist titlelen='120' row='8' typeid='2'}         <li class="li[field:global.autoindex/]"><a href="[field:arcurl /]" title="[field:title/]" target="_blank" >[field:

线程系列07,使用lock语句块或Interlocked类型方法保证自增变量的数据同步

假设多个线程共享一个静态变量,如果让每个线程都执行相同的方法每次让静态变量自增1,这样的做法线程安全吗?能保证自增变量数据同步吗?本篇体验使用lock语句块和Interlocked类型方法保证自增变量的数据同步. □ 线程不安全.数据不同步的做法 class Program { static int sum = 0; static void Main(string[] args) { Stopwatch watch = new Stopwatch(); watch.Start(); Parall

js在for循环里边定义函数用到自增变量产生的问题

笔者最近做了很多的应聘笔试题,其中有一个让我印象特备深刻,关于在一个for循环里边些函数运用到for循环里边定义的变量的问题,废话不多说,先上代码,大家可以看看这段代码最后的结果是什么: var array=[];//定义一个数组,空的 for(var i=0;i<3;i++){     array[i]=function(){         alert(i);     } } array[0](); array[1](); array[2](); 初学者可能咋一看,想,这不是很简单吗?依次弹

Fastdb 之定义cli_autoincrement 自增变量报错

最近在尝试使用fastdb进行开发,c++版本下测试基本ok,由于项目组采用C#开发,所以转用C#开发fastdb,结果发现C#版本各种阉割,如果定义变量自增,则会发生类型定义错误报错,一番追查下来发现是在fastdb 取值时未定义cli_autoincrement造成的. 由于fastdb对cli_autoincrement的处理方式类似于int4,所以对其进行类似int4类型的类型转换 修改代码如下: protected unsafe virtual Object getValue(Type

前端面试题总结一(js变量和函数声明提前相关)

好久没有更新博客了,^_^写写博客吧!下面是我总结的一些面试题,希望对大家有所帮助 (1)题目如下: alert(a)  var a=1  function a(){    alert(a) } 好多人肯定会觉得输出的结果是undefined,那你就错了,因为function也要声明提前的所以输出的结果应该是:: ? a(){alert(a)} 更有意思的来了如果我把上面的题改为如下: alert(a)function a(){ alert(a)}var a=1 输出的结果应该是:: ? a()

尚硅谷java学科新增面试宝典视频教程

下载地址:百度网盘下载 01_尚硅谷_JavaSE面试题:自增变量.avi02_尚硅谷_JavaSE面试题:单例设计模式.avi03_尚硅谷_JavaSE面试题:类初始化和实例初始化等.avi04_尚硅谷_JavaSE面试题:方法的参数传递机制.avi05_尚硅谷_JavaSE面试题:递归与迭代.avi/ y5 H4 N9 v6 k; t1 }06_尚硅谷_JavaSE面试题:成员变量与局部变量.avi1 I5 k& R5 c& d07_尚硅谷_SSM面试题_Spring Bean的作用域