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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 锦年123 中级黑马   /  2015-10-31 07:27  /  689 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
        * byte b1 = 3;
        * byte b2 = 4;
        * byte b3 = b1 + b2;
                * 从两方面去回答这个题
                * b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
                * byte类型的变量在进行运算的时候,会自动类型提升为int类型
        * byte b4 = 3 + 4;
                * 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了



面试题
        * byte b = 10;
        * b++;
        * b = b + 1;
        * 问哪句会报错,为什么


* 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
        * short s=1;s = s+1;
        * short s=1;s+=1;


面试题:
        * 请自己实现两个整数变量的交换
        * 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。


面试题
        * byte可以作为switch的表达式吗?
        * long可以作为switch的表达式吗?

        * String可以作为switch的表达式吗?

5 个回复

倒序浏览
很基础的题了,java基础课上都会涉及到。
回复 使用道具 举报
.....................................
回复 使用道具 举报
.....................................
回复 使用道具 举报
short s=1; s=s+1; 自然是编译不通过的,提示损失精度 。
short s=1; s+=1; 能编译通过。隐式类型转换可以从小到大自动转,即byte->short->int->long如果反过来会丢失精度,必须进行显示类型转换 , 而s+=1的意思与s = s+1不同,s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换,  所以将一个int类型赋给short就会出错,而s+=1不同由于是+=操作符,在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是   s+=1 <=> s =  (s的类型)(s+1)。
回复 使用道具 举报
顶一个!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马