i++ 和++i 的理解 以防面试
根本原理:
//模拟 a++
function afterAdd(){
var temp = a;
a = a+1;
return temp;
} //模拟++a;
function beforeAdd(){
a = a+1;
return a;
}
所以网上找了几个面试题,大家看看:
题目一:输出i的值是多少?
public void test(){
int i = 0;
i=i++;
System.out.println(i);
}
题目二:输出y 和i的值分别是多少?
public class Test3 {
public static void main(String[] args) {
int y=0;
int i =0;
y=++y;
y=++y;
y=++y;
y=++y;
y=++y;
System.out.println("y="+y);
i=i++;
i=i++;
i=i++;
i=i++;
i=i++;
System.out.println("i="+i); } }
第三题:js中 console.log出来的结果分别是什么
var a = 5,
b;
b = a++ +1;
console(b,a);
a = 5;
c = a-- + --a;
console(c,a);
a = 5;
d = --a + a++;
console(d,a);
第一题的答案是:0
第一题解析:i= i++;i++原理是:
int temp = i;
i = i+1;
return temp;
也就是说:i++执行的过程是:temp = 0; i=1;返回 temp ;即返回0;回到实际的代码里面:i=i++;即 i=0;
注意:这里原理里面的 i= i+1; 的最后i的结果被 实际的代码给覆盖掉了。所以这句话一直是被覆盖。
第二题答案:5,0
第二题的解析:++y,比较好理解,所以y=5; x的部分跟第一题是类似的;i++ 结果是 0,
int temp = i; //代入i int temp = 0;
i = i+1;// 代入i i= 1
return temp;// 返回 0;
回到代码:
i=i++; 即 i=0;
重复多次后 i=0,所以 输出 i = 0; 第三题的答案:第一个console.long (b,a):6,6; 第二个:console.long (c,a):8,3 ;第二个:console.long (d,a):8,5
第三题的解析:b = a++ +1; a++ 的结果:即
int temp = a; //代入i int temp = 5;
a = a+1;// 代入i i= 1 a = 5+1; 即a = 6;
return temp;// 返回 5; 即 a++ 为 5;
a++的结果是5,所以 b = 5+1 所以=6;
a的结果是,6;
第二个:console.long (c,a) :c = a-- + --a; a--的结果
int temp = a; //代入i int temp = 5;
a = a-1;// 代入i i= 1 a = a - 1; 即a = 4;
return temp;// 返回 5; 即 a-- 为 5;
--a ,当前 a =4,--a 即 a= 3; 所以 c = 5+3 所以 c = 8,a = 3;
第二个:console.long (d,a) :d = --a + a++; --a的结果,4; a++的结果:
int temp = a; //代入i int temp = 4;
a = a+1;// 代入i i= 1 a = 4 + 1; 即a = 5;
return temp;// 返回 4; 即 a++为 4;
a++ 为 4,d= 4+4 所以d=8 a = 5;
i++ 和++i 的理解 以防面试的更多相关文章
- 干货,阿里P8浅谈对java线程池的理解(面试必备)
线程池的概念 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成:ThreadPoolExecutor ...
- 30K入职腾讯,全靠这份606页的Android面试指南
前言 光阴似箭,日月如梭,时间真的过得飞快. 加上实习,从事 Android 开发,差不多有 5 年了.在上家公司职务.薪酬感觉已经到达了天花板,没有上升的余地.而且在这家公司过于安逸了,想换个有挑战 ...
- 一个五年 Android 开发者百度、阿里、聚美、映客的面试心经
花絮 也许会有人感叹某些人的运气比较好,但是他们不曾知道对方吃过多少苦,受过多少委屈.某些时候就是需要我们用心去发现突破点,然后顺势而上,抓住机遇,那么你将会走向另外一条大道,成就另外一个全新的自我. ...
- 面试体验:Facebook 篇(转)
http://www.cnblogs.com/cathsfz/archive/2012/11/05/facebook-interview-experience.html 2012-11-05 08:2 ...
- ABC: Always Be Coding——程序员面试必
本文作者@guitardave24 ">David Byttow 是一名程序员,曾在 Google 和 Square 等公司工作过. 在正文之前,先让我们回答几个简单的问题:第一,你面 ...
- Steve Yegge:Google面试秘籍
我憋了很长时间想写点关于去Google面试的秘籍.不过我总是推迟,因为写出来的东西会让你抓狂.很可能是这样.如果按统计规律来定义"你"的话,这文章很可能让你不爽. 为啥呢?因为啊- ...
- 360大牛:全面解读PHP面试
让大家了解基本面试流程和面试的核心要求以及意义是什么并理解PHP面试考点主要以基础为核心,说明PHP面试考察范围. 有需要联系:QQ:1844912514
- 年底Android面试整理(附答案)
面试,无非都是问上面这些问题(挺多的 - -!),聘请中高级的安卓开发会往深的去问,并且会问一延伸二.以下我先提出几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组件(生命周期, ...
- ios面试心得
第一部分:面试题 注意,下面这些题只是我准备的题库.在实际面试的时候我会根据面试者的水平抽出相应的题目来出的. 技术 基础 为什么说Objective-C是一门动态的语言? 讲一下MVC和MV ...
随机推荐
- POJ 2184 Cow Exhibition(背包)
希望Total Smart和Totol Funess都尽量大,两者之间的关系是鱼和熊掌.这种矛盾和背包的容量和价值相似. dp[第i只牛][j = 当前TotS] = 最大的TotF. dp[i][j ...
- Codeforces Round #324 (Div. 2) A B C D E
A,水题不多说. #include<bits/stdc++.h> using namespace std; //#define LOCAL int main() { #ifdef LOCA ...
- 索引属性 name指定
创建索引时的格式: db.collection.ensureIndex({param},{param}) 其中,第一个是索引的值,之前一直只用到了第一个,第二个参数便是索引的属性 比较重要的属性有: ...
- Go - 环境安装
目录 你好,Go语言 环境安装 目录结构 命令 开发工具 学习网址 小结 你好,Go语言 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. 因工作需要,准备入坑,先从环境安装开始 ...
- Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像(克隆和导入)
Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像: 注:直接复制一个.vdi 虚拟硬盘再挂上去就可以,但Virtualbox居然提示UUID重复,无法使用. 则,可以通过 ...
- ifup/ifdown ethX 和 ifconfig ehtX up/down的区别
相同点:[启用]和[禁止]网卡 ifup ethX 和 ifconfig ethX up 用来启用网卡设备 ifdown ethX 和 ifconfig ethX ...
- macOS如何正确驱动集成显卡HDMI(包括视频和音频)
聊聊如何正确驱动集成显卡HDMI(包括视频和音频)必备条件:1.必须使用AppleHDA驱动声卡(仿冒.clover.applealc都可以的),使用voodoo驱动声卡应该不行的.2.dsdt或者s ...
- JS中的引用、浅拷贝和深拷贝
js的深拷贝浅拷贝是很常遇到的问题,一直模模糊糊有点说不过去,所以这次好好总结一下. 1.js的引用 JS分为基础类型和引用类型两种数据类型: 基础类型:number.string.boolean.n ...
- nodejs 实现图片上传
1.首先在目录下的运行cmd,执行以下命令 npm install multer; 2.在router下新建upload.js let express = require('express');let ...
- 读取properties的简单方法,使用@Configuration
配置类代码如下 import org.springframework.beans.factory.annotation.Value; import org.springframework.contex ...