黑马程序员技术交流社区

标题: [面试题]java基础 [打印本页]

作者: 锦年123    时间: 2015-10-31 07:27
标题: [面试题]java基础
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
        * 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的表达式吗?

作者: Kris    时间: 2015-10-31 07:38
很基础的题了,java基础课上都会涉及到。
作者: Sayman    时间: 2015-10-31 10:44
.....................................
作者: Sayman    时间: 2015-10-31 10:46
.....................................
作者: 小强v587    时间: 2015-10-31 11:09
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)。
作者: IPvL9h    时间: 2015-10-31 22:26
顶一个!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2