首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试官“逗”你系列:不借助第三变量交换两个变量值的方案你有几种?

引言 我们学习编程之初,就学习过变量的赋值操作,同时也学习了一个变量的值赋值给另外一个变量。对于交换两个变量的值,很多童鞋都有解决方案。...临时变量a的值赋值给变量tmp let tmp = a // 2. 变量b的值赋值给a a = b // 3....二、不借助第三变量的实现-ES6版 面试官听到上面给出的解决方案后,微微一笑(脑海中闪现到:你以为就这么简单)说道,有其他解决方案吗,不借助第三变量呢?...let a = 5; let b = 4; // 请注意此位置的分号;是一定要存在的呀 // 数组结构赋值,交换变量a,b的值 [a, b] = [b, a] console.log(a) // 4...变量的运算中这个操作符有什么作用呢? 异或运算符: 是执行位运算的,二进制运算,参与变量运算的两个变量要转为二进制进行运算。 如果相同二进制位的值相同,则转为0,否则转为1.

41930
您找到你想要的搜索结果了吗?
是的
没有找到

javascript中如何字符串转成变量或可执行的代码?

有这样一个需求:当前作用域内有未知的一些变量,其中一个函数中可以拿到某个变量名字符串,怎么能在函数内通过传进来的字符串取到作用域链中的变量值,示例小 demo 如下: const name = '周小黑...' const age = 18 /** * @param {String} e 变量名字符串 * @returns value 通过变量名字符串作用域链中取到的变量值 */ function...return value } const str = fn('name') 要解决上面的问题,主要就是怎么字符串转变成可执行的代码?...setTimeout 定时器 setTimeout 的第一个参数我们平时都是传一个函数,它其实也是可以传字符串进去的,浏览器中是可以正常执行的,node环境中会报错。...实际上浏览器中也是不推荐这么用的,另外需要注意的是字符串中的变量只能访问全局作用域,不能访问局部作用域,如果全局作用域中没有,就是 undefined。

40930

C++内存布局(1)-让new出的两个变量堆上的地址连续

可以看到栈的增长是按照从高到的低的顺序 而堆的增长是按照从低到高的顺序 同时我们也可以看成栈分配的内存是连续的 而堆的分配的内存是不连续的 哪我们有没有办法使堆的分配在两个连续的内存上呢?...t1 << " " << t2 << endl; cout << "t1,t2的地址 :" << &t1 << " " << &t2 << endl; 我们先用malloc分配出一块大小为两个...int的内存 这时p1指向这块内存的起点 我们再将p1移动int个大小的内存得到了p2 然后分别在p1和p2所指的地址上构建变量 这样就使的new出的两个变量堆上的地址连续了 debug下 ?...栈(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。分配方式类似于数据结构中的栈。 堆(heap) — 由程序员分配释放, 若程序员不释放,程序结束时由OS回收 。...p1)int(1) — 重载operator new 的一个标准、全局的版本,原型是void *operator new( size_t, void *p ) throw() { return p; }p

83090

csproj 文件中使用系统环境变量的值(示例 dll 生成到 AppData 目录下)

Windows 资源管理器使用 %var% 来使用环境变量,那么我们能否 Visual Studio 的项目文件中使用环境变量呢? 本文介绍如何在 csproj 文件中使用环境变量。...遇到的问题 Windows 资源管理器中,我们可以使用 %AppData% 进入到用户的漫游路径。...于是,我需要将 Visual Studio 的调试目录设置为以上目录,但是以上目录中包含环境变量 %AppData% Visual Studio 中修改输出路径 如果直接在 csproj 中使用 %...实际上,Visual Studio 是天然支持环境变量的。直接使用 MSBuild 获取属性的语法即可获取环境变量的值。 也就是说,使用 $(AppData) 即可获取到其值。...我的电脑上是 C:\Users\lvyi\AppData\Roaming。 于是, csproj 中设置 OutputPath 即可正确输出我的插件到目标路径。

35950

Python基础之函数二

函数 变量作用域 多函数程序执行流程 函数的返回值 函数的参数 包和交换两个变量的值 引用 可变和不可变类型 一. 变量作用域 变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。...局部变量 所谓局部变量是定义函数体内部的变量,即只函数体内部生效。...思考:如果有一个数据,函数A和函数B中都要使用,该怎么办? 答:这个数据存储一个全局变量里面。...和b = 20,交换两个变量的值。...引用 6.1 了解引用 python中,值是靠引用来传递来的。 我们可以用id()来判断两个变量是否为同一个值的引用。 我们可以id值理解为那块内存的地址标识。

84510

Python基础(十七):函数的深入了解

​函数的深入了解一、变量作用域变量作用域指的是变量⽣效的范围,主要分为两类:局部变量和全局变量。 局部变量 所谓局部变量是定义函数体内部的变量,即只函数体内部生效。...思考:如果有⼀个数据,函数A和函数B中都要使用,该怎么办? 答:这个数据存储⼀个全局变量里面。...保存函数test1的返回值result = test1()# 2.函数返回值所在变量作为参数传递到test2函数test2(result) # 50三、函数的返回值思考:如果⼀个函数如些两个return...方法一 借助第三变量存储数据。# 1. 定义中间变量c = 0# 2. a的数据存储到cc = a# 3. b的数据20赋值到a,此时a = 20a = b# 4....我们可以⽤ id() id() 来判断两个变量是否为同⼀个值的引⽤。 我们可以id值理解为那块内存的地址标识。

86971

python函数详解_INDEX函数

函数的作用 函数就是一段具有独立功能的代码块 整合到一个整体并命名,需要的位置调用这个名称即可完成对应的需求。 函数开发过程中,可以更高效的实现代码重用。 二. 函数的使用步骤 1....变量作用域 变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。 局部变量 所谓局部变量是定义函数体内部的变量,即只函数体内部生效。...答:这个数据存储一个全局变量里面。...交换变量值 需求:有变量a = 10和b = 20,交换两个变量的值。 方法一 借助第三变量存储数据。 # 1. 定义中间变量 c = 0 # 2. a的数据存储到c c = a # 3....了解引用 python中,值是靠引用来传递来的。 我们可以用id()来判断两个变量是否为同一个值的引用。 我们可以id值理解为那块内存的地址标识。

86420

C#学习笔记三: C#类型详解..

值类型和引用类型的区别在实际数据的存储位置:值类型的变量和实际数据都存储堆栈中; 而引用类型则只有变量存储堆栈中,变量存储实际数据的地址,实际数据存储与地址相 对应的托管堆中。...装箱操作可以具体分为以下3个步骤: (1)内存分配: 托管堆中分配好内存空间以存放复制的实际数据  (2)完成实际数据复制:值类型实例的实际数据复制到新分配的内存中 (3)地址返回: 托管堆中的对象地址返回给引用类型变量...箱过程也可以具体分为3个步骤: (1)检查实例:首先检查要进行箱操作的引用类型变量是否为null,如果为null则抛出空指针异常,如果不为null则继续减产变量是否合箱后的类型是同一类型,若不是则会抛出...InvalidCastExce异常 (2)地址返回:返回已装箱变量的实际数据部分地址 (3)数据复制: 托管堆中的实际数据复制到栈中 总结:对于箱与装箱的理解之所以是如此重要,主要是因为装箱和箱操作对性能有很大的影响...如果程序代码中存在过多的装箱和箱操作,由于两个过程 都需要进行数据复制,该操作会消耗大量额外运行时间;并且装箱和箱必然会产生多余的对象,这进一步加重了GC的负担,导致程序的性能降低。

1.3K140

JAVA面试50讲之4:int和Integer的区别

Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。...int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动包装为int,然后进行比较,实际上就变为两个int变量的比较) Integer...100); Integer j = 100; System.out.print(i == j); //false 4、对于两个非new生成的Integer对象,进行比较时,如果两个变量的值区间-128...3.理解自动装箱和箱 3.1 什么是装箱?什么是箱? 装箱就是 自动基本数据类型转换为包装器类型;箱就是 自动包装器类型转换为基本数据类型。...5.2 无法高效地表达数据,也不便于表达复杂的数据结构 Java 的对象都是引用类型,如果是一个原始数据类型数组,它在内存里是一段连续的内存,而对象数组则不然,数据存储的是引用,对象往往是分散地存储堆的不同位置

95720

python笔记13

函数 变量作用域 变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。 局部变量 所谓局部变量是定义函数体内部的变量,即只函数体内部生效。...全局变量 所谓全局变量,指的是函数体内外都能生效的变量 # 定义全局变量量a a = 100 def testA(): print(a) # 访问全局变量量a,并打印变量量a存储的数据...包和交换变量包 元组 def return_num(): return 100, 200 num1, num2 = return_num() print(num1) # 100 print...name print(b) # age print(dict1[a]) # TOM print(dict1[b]) # 18 交换变量值 需求:有变量a = 10和b = 20,交换两个变量的值 方法...定义中间变量量 c = 0 # 2. a的数据存储到c c = a # 3. b的数据20赋值到a,此时a = 20 a = b # 4.

37520

面试题系列第3篇:Integer等号判断的内幕,你可能不知道?

变量JVM中的存储 彻底弄清楚上问题之前,我们先来了解一下基础类型变量、引用类型变量JVM中的存储。 通常变量分为局部变量和全局(成员)变量。...同样类中声明的变量也是分为基本类型和引用类型。 (1)基本类型:变量名和值存放在堆内存中。 (2)引用类型:变量是一个引用地址,该地址指向所引用的对象。此时,变量和对象都在堆中。...结合上面的理论,我们通过一段代码来分析一下各种类型所存储的位置。...假设编译器先处理int a=3,此时会在栈中创建a的引用变量,然后查找栈中是否存在3这个值,如果没有就将3存放进来,然后a指向3。 接着处理int b=3,创建完b的引用变量后,同样进行查找。...因为栈中已经有3这个值,便b直接指向3。 此时,a与b同时指向3这个值,自然是相等的。

60330

Java基础之int和Integer有什么区别

1 Java两种数据类型 1.1 Java两种数据类型分类 (1)基本数据类型,分为boolean、byte、int、char、long、short、double、float; (2)引用数据类型 ,...分为数组、类、接口。...3 int与Integer的深入对比 (1)由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同...int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动包装为int,然后进行比较,实际上就变为两个int变量的比较) Integer...对象,进行比较时,如果两个变量的值区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false Integer i = 100; Integer j = 100;

54220

Java 中的变量类型、箱装箱及相互间的转换

Java 中的变量类型、箱装箱及相互间的转换 一、Java 中变量类型 1.1 以数据类型划分 1.1.1 基本数据类型 浮点数的题外话 1.1.2 引用数据类 1.2 以声明的位置为依据划分 1.2.1...成员变量 1.2.2 局部变量 二、箱与装箱机制 一个 String 的例子 三、相互间的转换 一、Java 中变量类型 1.1 以数据类型划分 1.1.1 基本数据类型 整数型变量 变量名 说明...变量名 说明 char 2字节,包装类为Charac 逻辑型 变量名 说明 boolean 1字节,包装类为Boolean 1.1.2 引用数据类 类 接口 数组 1.2 以声明的位置为依据划分 1.2.1...里,考虑到垃圾回收(Garbage Collection)的方便,heap(堆)划分为三部分:young generation(新生代)、tenured generation (old generation...String 对象 “abc”,然后 s1 指向这个内存地址,以后创建值为 “abc” 的字符串对象,始终只有一个内存地址被分配,其余的都是 String 的拷贝。

51140

每天 3 分钟,小闫带你学 Python(二十一)

3.掌握包与交换变量的值。 1.函数的4种类型 根据是否有参数以及是否有返回值,可以函数大体分为四种类型。大家根据实际使用场景进行自由组合,灵活设计使用即可。...B 内部代码,函数 B 代码执行结束后接着返回函数 A 中调用函数 B 位置之后的代码,直到函数 A 执行完毕。...3.包与交换变量的值 3.1 包 此处的包并非是 CF 中的 C4 炸弹,而是多个元素的集合,拆分成一个个元素的情况。...3.1.2 应用 前面讲到,一个函数如果有多个返回值,但是调用函数后,使用一个变量进行接收返回值,会发现变量是一个元组,如果想使用内部的元素,可以进行包操作: def getinfo():...3.2 交换变量的值 假设有两个变量 a 和 b,如果想要交换两者的值,怎么办?

64820

2022年最新Python大数据之Python基础【七】参数与管理系统

# 定义函数时:位置参数,缺省参数,位置不定长参数,关键字不定长参数 到底定义时怎么排列呢?...,组合为一个容器类型,进行使用或变量保存 包:一个容器类型,进行拆分,其中的每一个元组赋值给其他的变量 # 组包:就是讲多个值进行组合,打包为一个容器类型的过程 # 包:就是讲一个容器类型,拆分成多个数据...(func1()) # (1, 2, 3, 4) # 多个数据打包整合为一个容器,赋值给变量,这个就是组包过程 a = 1, 2, 3, 4 print(a) # 包(解包) # 等号右侧的列表...,拆分为四个数据元素,分别赋值给a,b,c,d这个过程就是包 a, b, c, d = [1, 2, 3, 4] print(a, b, c, d) # 之前我们循环汇总用过包过程 list1...a = 1 b = 2 # 需求:a, b进行互换值 # 这个互换过程,是先讲a,b的值提取出来,组包为一个元组,然后进行包,元组内的两个数据分别赋值给,a,b变量 a, b = b, a print

59610

奇怪的Java题:为什么128 == 128返回为false,而127 == 127会返回为true?

2. int与Integer的深入对比 注:对于引用类型变量,==操作符比较的是两个引用是否指向同一个对象;对于基本类型变量,==操作符比较的是两个变量的值是否相等。...(1) 由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的。...,其内存地址不同 (2) Integer变量和int变量比较时,只要两个变量的值是相等的,则结果为true。...int,然后进行比较,实际上就变为两个int变量的比较 (3) 非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。...Java两种数据类型 3.1 Java两种数据类型分类 原始数据类型,分为boolean、byte、int、char、long 、short、double、float 引用数据类型 ,分为数组、类、接口

2.2K31
领券