Java面试题02

  1. 抽象类和接口的区别

    不同点:

    抽象类可以定义构造器,接口不能。

    抽象类可以有具体的方法和抽象方法,接口不能有具体方法。

    接口中的成员全是public,抽象类成员可以private,public,protected,默认修饰符

    抽象类中可以定义成员变量,接口只能是常量。

    有抽象方法类必须声明为抽象类,抽象类没必要有抽象方法。

    抽象类中包含静态方法,接口中不能有静态方法。

    一个类只能继承一个抽象类,可以实现多个接口。

    相同点:

    不能实例化。可以将抽象类和接口类型作为引用类型。

  2. 抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法(native),是否可同时被 synchronized?

    抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。

    本地方法是由本地代码(如 C++ 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。

    synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。

  3. final,finally,finalize区别

    final是用于声明属性和方法以及类的

    finally是异常处理的一个结构部分

    finalize是object的一个类,这是一个被动的方法(其实就是回调方法),不需要我们调用。

  4. error和exception的区别?

    error是系统崩溃,虚拟机错误,应用程序无法克服和恢复的严重问题

    所有异常的根类为 java.lang.Throwable

    exception是异常,可以捕获,可以克服和恢复的问题

    如果在catch中遇到了return或者异常等能使该函数终止的话那么有finally就必须先执行完finally代码块里面的代码然后再返回值.

  5. 获取当前时间

    Calendar cal = Calendar.getInstance();
    int i = cal.get(Calendar.YEAR);
    
    LocalDateTime dt = LocalDateTime.now();
    int year = dt.getYear();
    
  6. 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);其中有隐含的强制类型转换。

  7. 整型字面量的值在-128 到 127 之间,那么不会 new 新的 Integer 对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1f2的结果是 true,而f3f4 的结果是false。

  8. string,stringbuilder,stringbuffer区别

    string和stringbuilder是线程安全的,stringbuffer是线程不安全的

    string是不可变,stringbuild和stringbuffer是可变

    stringbuilder在单线程中速度高于stringbuffer,因为stringbuffer在方法上加了synchronized关键字进行同步。

  9. 字符串转基本数据类型

    调用包装类方法parseXXX(string)或者valueOf(string)

  10. Java几种类型的流

img

​ 按照处理数据的单位: 字节流和字符流。字节流继承于 InputStream 和OutputStream, 字符流继承于InputStreamReader 和 OutputStreamWriter 。

  1. 序列化标识

    实现Serializable接口,该对象就可以序列化

  2. 克隆的二种方法

    实现Cloneable接口并重写clone方法

    实现Serializable接口,通过对象的序列化和反序列化实现克隆

  3. arrayList,hashSet,hashMap都不是线程安全的,在集合中vector和hashtable是线程安全的

  4. arrayList内部实现是使用数组的形式实现存储,实现了RandomAccess接口,对元素随机访问速度非常快,实现了Cloneable接口,能被克隆,

    实现了Serializable接口,支持序列化。

  5. set和list父类接口时Collection接口,list:arrayList和LinkedList

    set:treeSet和HashSet map:hashMap,hashTable,TreeMap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值