当前位置:首页 > iOS开发专区 > 正文内容

不用第三个变量交换2个值

13年前 (2012-03-18)iOS开发专区6734
面试的时候遇到过这样的问题。
不借助第三个变量让2个变量交换值。


public static void main(String[] args) {
  int a = 10;
  int b = 12;
  a = b + (b = a) * 0; // 这句实现交换
  System.out.println("a:" + a + "  b:" + b);
}


对于这段代码片段:
int a = 1;  
int b = 2;    
a = b + (b = a) * 0;  
如果将其转换为静态单赋值形式,并限制每个语句都是一个二元运算与一个赋值,就变成:
int a0 = 1;
int b0 = 2;
int b1 = a; // (b = a)
int temp1 = b1 * 0; // (b = a) * 0
int a1 = b0 + temp1; // b + (b = a) * 0
这样就比较明显了:a0、b0是交换前的值,a1、b1是交换后的值。
说真的这样写只是在自己的代码里少用了个临时变量而已。编译器还是得插入一些临时变量,并不是说自己少用了显式的变量就等于实际运行效率高。

扫描二维码推送至手机访问。

版权声明:本文由 果签工坊 发布,如需转载请注明出处。

本文链接:https://applep12.vip/programming/urM6IynxD1JKXa9.html

分享给朋友:

相关文章

js直接操作access数据库

<html>    <head><titel>jstest</title></head>    &l...

tomcat 虚拟内存配置(含安装版、解压版)

1.适用于解压版Tomcatwindows 下 tomcat 虚拟内存配置      在tomcat的bin目录下,找到catalina.bat 文件,打开,在最上面添加这样一句:...

重新设置 Myeclipse workspace

启动不提示 “Workspace Launcher”对话框的情况下首次启动Eclipse/MyEclipse时, 会弹出"Workspace Launcher"对话框, 提示设置Workspace路径. 设定好路径后,...

初学extjs 了解的一些基本属性

1.  Ext.Msg.alert("角色管理信息提示", "角色权限保存成功!");2.  store.baseParams.jsonString = jso...

关于extjs组件中的内存泄露问题

所有component的子类都自动的参与标准的ext组件的生命周期:创建,渲染,销毁,这些操作由Container类提供。在创建容器时,组件可以通过item配置选项添加到容器中,或者可以add方法动态地添加。所有组件都注册到了ext.com...

Struts、Spring、Hibernate方向面试题

Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭Se...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。