1、switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?



        在 Java 5 以前, switch(expr) 中, expr 只能是 byte 、 short 、 char 、 int 。



        从 Java5 开始, Java 中引入了枚举类型,expr 也可以是 enum 类型。



        从 Java 7 开始, expr 还可以是字符串( String ),但是长整型(long), 在目前所有的版本中都是不可以的。





2、用最有效率的方法计算 2 乘以 8




        2 << 3 (左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。





3、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?为什么?



        

        Math.round(11.5)的返回值是 12 , Math.round(-11.5) 的返回值是 -11 。



        原因:因为四舍五入了,在参数上加 0.5 然后进行下取整。






4、float f=3.4。 是否正确?






         不正确。 3.4 是双精度数,将双精度型( double )赋值给浮点型( flfloat )属于下转型( down- casting ,也称为窄化)会造成精度损失,因此需要强制类型转换 flfloat f =(flfloat)3.4; 或者写成 float  f =3.4F;






5、short s1 = 1; s1 = s1 + 1; 有错吗 ?



      short s1 = 1; s1 += 1;有错吗?




        对于 short s1 = 1; s1 = s1 + 1; 由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。



        而short s1 = 1; s1 += 1; 可以正确编译,因为 s1+= 1; 相当于 s1 = (short(s1 + 1); 其中有隐含的强制类型转换。






6、 Java 有没有 goto?




        goto是java的保留字,目前并没有被使用到。






7、fifinal 有什么用?




        用于修饰类、属性和方法。



        被fifinal 修饰的类不可以被继承



        被fifinal 修饰的方法不可以被重写



        被fifinal 修饰的变量不可以被改变,被 fifinal 修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的。






8、 final finally finalize 区别



        

        final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、 修饰变量表 示该变量是一个常量不能被重新赋值。



        finally一般作用在 try-catch 代码块中,在处理异常的时候,通常我们将一定要执行的代码方法



finally 代码块 中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代



码。



        finalize是一个方法,属于 Object 类的一个方法,而 Object 类是所有类的父类,该方法一般由垃圾 回收器来调用,当我们调用System.gc() 方法的时候,由垃圾回收器调用 fifinalize() ,回收垃圾,一个对象是否可回收的最后判断。






9、 static 存在的主要意义




        static的主要意义是在于创建独立于具体对象的域变量或者方法。 以致于即使没有创建对象,也能 使用属性和调用方法



        static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能 。 static 块可以置于类中的任何地方,类中可以有多个static 块。在类初次被加载的时候,会按照 static 块的顺序来执行每个static 块,并且只会执行一次。



        为什么说static 块可以用来优化程序性能,是因为它的特性 : 只会在类加载的时候执行一次。因此,很多时候会将一些只需要进行一次的初始化操作都放在static 代码块中进行。






10、构造器(constructor)是否可被重写( override)




         构造器不能被继承,因此不能被重写,但可以被重载。