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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© {黑马} 中级黑马   /  2015-8-8 20:01  /  577 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


1.        Java之父 -- 詹姆斯·高斯林(James Gosling)

2.进制转换问题

    byte b2 = (byte)130;
                System.out.println(b2);//-126
               
解释:
    byte b2 = (byte)130;

          数据:130默认是int类型的十进制数据。

                第一步:十进制的130转换成二进制数据。
                        128 64 32 16 8 4 2 1
                        1   0  0  0  0 0 1 0
                第二步:130在内存中的表示形式,你做了截取(因为强制转换成byte类型,所以截取成一个字节!)
                        00000000 00000000 00000000 10000010  ——>补码
                       
                        截取后的结果是:
                                10000010 (补码)
                第三步:二进制数据是10000010
                        通过观察,我们发现这是一个负数。
                        补码:1 0000010
                        反码:1 0000001
                        原码:1 1111110
                       
                        最终的结果是:
                                1 1111110
                               
---------------------------------------------------------------

                byte b3 = (byte)300;
                System.out.println(b3);//44
解释:
    byte b3 = (byte)300;
               
                二进制:
                00000000 00000000 00000001 00101100 (补码)
                截取后:
                00101100(补码)
  

3.类型转换问题
  A:
    byte b1 = 3;
                byte b2 = 4;
                byte b3 = b1 + b2;
                byte b4 = 3 + 4;
解释:byte b3 = b1 + b2;报错!!!               
                byte类型不直接参与运算,在运算过程中,byte类型会自动提升为int类型;
                b1+b2的值是int类型的,把int类型的值赋值给byte类型的变量可能会损失精度。
                所以,在编译时,会报错!!!
                而byte b4 = 3 + 4;是常量参与运算,编译器会先计算值,再判断该值是否是左边类型能够表示的范围,如果是,则不报错!
               
  B:
    short s = 1;
          s = s + 1;               
          和
          short s = 1;
          s+=1;
               
          有问题吗?为什么呢?
       
          必须有!编译时在 s = s + 1; 报错!!
          原因:s是short类型,1默认的是int类型,在运算过程中,会自动把short类型提升为int类型,
               s+1的结果是int类型,把int类型的值赋值给short类型的变量可能会丢失精度。
               而s+=1; += 这种赋值运算符中隐含了强制转换,既s=(short)(s+1);
             
4. 运算符问题

  A:请用最有效率的代码写出2乘以8
                2<<3
               
        B:交换两个变量
       
          位^运算符
          
                        a = a ^ b;
                        b = a ^ b;
                        a = a ^ b;

9 个回复

倒序浏览
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 使用道具 举报
总结的很好,值得学习!赞一下
回复 使用道具 举报
赞一个!!!!
回复 使用道具 举报
这几道面试题一般不会出,大多数题是集合,IO流,多线程,反射那里了,面向对象不会单独出题,但是是基础,很重要
回复 使用道具 举报
顶帖。。。。。。。。
回复 使用道具 举报
加油。
回复 使用道具 举报
赞!!!!
回复 使用道具 举报
顶顶顶顶顶
回复 使用道具 举报
well done ^^^
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马