Java简单笔试题(二)

时间:2022-08-29 21:35:39

2016年10月我们学校校招的某一招聘公司的笔试题:

1.String StringBuilder StringBuffer的区别。(曾经阿里巴巴的校招实习面试题)

2.Java中Thread类的start()方法和run()方法有什么区别?

3.Java中是否可以在类的static方法中访问类的非static属性? static方法能否被override?

4.java中能否将int类型变量转换为byte类型变量? a=128,件a转换为byte后的值是多少?

5.是否可以继承String类?





答案解析:

1.我们可以这样回答:

(1)String创建的对象是不可变的,是常量,而且在创建String str = “abs”的时候,JVM会在常量池中先查找是否已经创建了相同的字符串,如果有那么返回次字符串的引用,否则就创建新的对象。而StringBuilder和StringBuffer是可变的。

(2)String str = “love”; str=str + “abc”; StrinBuilder str1 = new StringBuilder(“love”); st1 = str1.append(“abc”);在对String对象使用”+”进行连接的时候,性能差,而且会产生新的引用。而使用StringBuffer和StringBuilder对象时,并不产生新的引用。

(3)String和StringBuffer是线程安全的,StringBuilder是线程不安全的。操作少量数据可以使用String;操作单线程大量数据可以使用StringBuilder;多线程大量数据可以使用StringBuffer;

2.start()方法是用于构建完Thread实例后,用来让线程处于启动的状态的,但是线程有可能不是马上开始执行。run()是线程执行逻辑操作的地方。一个用于启动线程,一个用于执行线程的操作,这是两者的区别。

3.不可以,不可以

参考:http://blog.csdn.net/andy_px/article/details/50781169

4.可以,需要强制类型转换 。 -128。

参考:http://blog.csdn.net/qq_24696917/article/details/51899557

附加:补码表示:正数的补码表示与原码表示一样;负数的补码表示是原码表示的符号位不变,数值位逐位取反后最低位加1(反码表示最低位加1).

5.不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。

参考:http://www.cnblogs.com/shenxiaoquan/p/5941033.html