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

答:switch可以作用于icsb(i see sb)上,即int、char、short、byte和他们的包装类;不可作用于fdlb(伏地捞逼)上,即float、

double、long、boolean和他们的包装类;也可以作用于字符串类型,jdk1.7之后可以作用在String上。

 

 

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

答:采用位运算符<<进行运算最有效率,位运算是cpu直接支持的,所以最省内存,速度最快。即System.out.println(2<<3);2在二进制中是0000 0000 0000 0010,2<<3即是将1向左移3位,变为0000 0000 0001 0000,转换为十进制是2的4次方,等于16。

 

 

13、数组有没有length()方法?String有没有length()方法?

答:数组中没有length()方法,求数组的长度可以使用数组的length属性,String中有length()方法,用来求字符串的长度。

工行java外包面试题 工行java笔试题_值传递

 

14、在Java中,如何跳出当前的多重嵌套循环?

答:方法1,可以在外层循环前定义一个标号(如ok),然后在里层循环的代码中使用带有标号的break语句(如break ok)。

工行java外包面试题 工行java笔试题_字符串_02

方法2,让外层的循环条件表达式可以受到里层循环体代码的控制。

工行java外包面试题 工行java笔试题_值传递_03

 

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

答:构造器是构造方法,是不能被继承和重写的,因为构造器的名称和类名相同,而继承是类名不能相同的,所以不能继承和重写。但是可以重载。

 

 

16、两个对象值相同(x.equals(y) == true),但却可有不同的hashcode,这句话对不对?

答:对。因为如果对象重写了equals方法,是可能出现对象equals相同,而他们的哈希码hashcode不同的。当然,如果对象继承Object类,没有重写equals方法,那么两者的hashcode相同,因为Object对象的equals方法默认是用==实现的,即equals相同hashcode也相同。

 

 

17、是否可以继承String类?

答:不可以。String类的定义是public final class String extends Object,可以看到里面有final关键字,而被final关键字修饰的类是不可以被继承的。

 

 

18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

答:值传递。Java中只支持参数的值传递,当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

 

 

19、String和StringBuilder、StringBuffer的区别?

答:String是字符串常量,对象创建之后不可更改;而StringBuilder和StringBuffer是字符串变量,创建的对象可以更改。运行速度上,StringBuilder>StringBuffer>String,其中String适用于少量字符串操作的情况;StringBuffer很多方法带有synchronized关键字,是线程安全的,适用于多线程在字符缓冲区进行大量操作的情况;StringBuilder是线程不安全的,适用于单线程下在字符缓冲区进行大量操作的情况。

工行java外包面试题 工行java笔试题_工行java外包面试题_04

 

20、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

答:两者都是实现多态的方式,但重载实现的是编译时的多态性,而重写(覆盖)的是运行时的多态性。重载要求在同一个类之中,方法名相同参数类型、参数个数不同;重写发生在子类和父类之中,重写方法的返回类型要相同,子类的比父类的更好访问。重载对返回类型没有特殊的要求,因为方法在调用时可以不将返回值赋值给一个对应的变量,即不能指定类型信息,编译器不知道你要调用哪个函数。