A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

    一个细枝末节:代码如下:short s=4;s=s+5;与s+=5;这两句话有什么区别呢?答:s=s+5不能通过编译,而后面那种表达形式可以。原因:short在内存中只占了2个自己,在执行s+5的时候,系统会自动把它提升为int型,而int是四个字节的,再把一个四字节的数赋值给一个2字节,这个是肯定不能通过编译,而且你还不能强制转换,如果你这样写:s=(short)s+4;编译的时候系统会报损失精度的错误。而s+=5;却能够通过编译,这个表达式它只做赋值,其内部有自动转换功能。(以后面试可能会用到)。
   .两个数的相互转换,如何不用第三个变量实现。例如互换n和m,需用到一下三个表达式:n=n+m; m=n-m; n=n-m;这样就换过来了,我当时也理解了蛮久的。第一个表达式执行完之后,n的值已经变化了,但是m的值还没有变化,这时候可以用n-m得到之前n的值,把它赋值给m,此时就已经实现了m得到了n的值,接下来就是要将之前m的值赋值给n,这不就简单了嘛,用现在的n减去现在的m得到的不就是以前的m的值了嘛。同理也可以用异或运算实现,我们都知道一个数以后另一个数两次结果还是自己本身。用异或运算实现的代码如下:n=n^m;m=n^m;n=n^m;再写的详细点吧,免得自己以后也看不懂了,得到的m的值相当于:n^m^m;得到的n的值相当于:n^m^n;

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
不错不错!我也是的!刚来的时候,以为自己知道很多呢!
在这里转了一圈发现这个还有很多东西需要去深入呢!
这不!我又去重新看这个基础视频了!基础还是很重要的!
回复 使用道具 举报
不错,学习的过程中思考很重要,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马