黑马程序员技术交流社区

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

作者: 记忆海    时间: 2016-4-9 23:34
标题: JAVA基础面试题 1
* 面试题 1:看下面的程序是否有问题,如果有问题,请指出并说明理由。
        * 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了


面试题 2
                    String s1 = "a";
                String s2 = "b";
                String s3 = "ab";
                System.out.println(s3 == s1 + s2);      // false
                System.out.println(s3 == "a" + "b");     // true



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

                s = s + 2;     // 报错,short类型参与运算会转换成int类型,相加后结果是int,赋值给short可能损失精度.
                s += 2;      // 不报错,相当于 s = (short)(s + 2);



面试题 4    请自己实现两个整数变量的交换
         int a = 10;
         int b = 20;
        第一种:不使用第三方变量
        a = a ^ b;
        b = a ^ b;
        a=  a ^ b;
       第二种:使用第三方变量
       int temp = a;
        a = b;
        b = temp;


面试题 5    用最高效的方式计算2*8的结果.
                        2 << 3




面试题 6
        * byte可以作为switch的表达式吗?      可以
        * long可以作为switch的表达式吗?      不可以
        * String可以作为switch的表达式吗?      JDK1.7之后可以

        switch表达式允许的数据类型是:byte 、 short、 int 、 char;jdk5之后增加:枚举;JDK7之后增加:String







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