java面试题(二)

来源:互联网 发布:瞻博网络工厂 编辑:程序博客网 时间:2024/05/21 17:14

11,用最有效的方法计算2乘以8?

答:2<<3(左移三位相当于2的三次方,右移三位相当于除以2的三次方)

解释:应该是2的二进制表示法左移3位,2的二进制应该是0000 0010,左移3位后
0001 0000,再转成十进制就是2*4=16

12,数组有没有length()方法?String有没有length()方法?

答:数组没有length()方法,有length的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和java混淆。

13,在java中,如何跳出当前的多重嵌套循环?

答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。(java中支持带标签的break和continue语句,作用类似于C和C++中的goto语句,但是就像要避免使用goto一样,应该避免使用带标签的break和continue,因为他不会让程序变得更优雅,很多时候有相反的作用,所以这种语法其实不知道更好)

14,构造器(constructor)是否可被重写(overried)?

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

15,两个对象值相同(x.equals(y)==true),但是可以有不同的hasn Code,这句话对不对?

答:不对,如果连个对象x和y满足x.equals(y) == true,他们的哈希码(hash Code)应当相同,java对于equal方法和hash Code方法是这样规定的: (1)如果两个对象相同(equals 方法返回true),那么它们的hash Code 值一定相同,(2)如果两个对象的hash Code相同,它们不一定相同。

16,是否可以继承String类?

答:String类不可以被继承,原因是String是Final类

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

答:是值传递,java语言的方法调用只支持参数的值传递。

18,String和StringBuilder ,StringBuffer的区别?

答:java 平台提供两种类型的字符串:String 和String Buffer /String Builder,他们可以存储和操作字符串,String是只读字符串,也就意味着String引用的字符串内容是不能被改变的,而StringBuffer/StringBuilder类表示字符串对象可以直接进行修改。StringBuilder是java5中引入的,它和StringBuffer的方法完全相同,区别在于它是单线程环境下使用,应为它的所有方面都没有被synchronized修饰,他的效率也比StringBuffer要高。

19,重载(OverLoad)和重写(Override)的区别,重载方法能否根据返回类型进行区分?

答: 方法的重载和重写都是实现多态的方式,区别在于前者实现编译时的多态性,而后者实现的是运行时是多态性,重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同,参数个数不同或者二者都不同)则视为重载;重写发生在子类和父类之间,重写要求子类配重写的方法与父类被重写的方法有相同的返回类型,比父类重写的方法更好的访问,不能比父类配重写的方法声明更多的异常。重载队返会数据类型没有要求。

20,char型变量中能不能存储一个中文汉字,为什么?

答:char的类型可以存储一个中文汉字,因为java中使用的编码是Unicode(不选择任何特定编码,直接使用字符在字符集中编码,这是统一的唯一方法),一个char类型占两个字节(16比特),所以放一个中文没有问题。

 

原创粉丝点击