Java面试-基础篇

  1. 抽象类和接口
  • 抽象类是单继承,多实现;接口是多继承。抽象类可以定义构造器,二者都不能被实例化。
  • 抽象类中属性可以是private、protected、public,接口中属性只能是public static final(隐式添加修饰限定符)
  • 抽象类中既可以由抽象方法,也可以有非抽象方法。接口中定义抽象方法。JDK1.8之后 接口中可以定义默认方法和静态方法。接口中静态方法只能由接口调用,相当于工具类方法。默认方法必须由实现者调用,接口只提供默认实现,实现者可以选择重写
  1. String StringBulider StringBuffer
  • String 是final的不可变的
  • StringBuilder 底层是char[],默认初始化大小为16,线程不安全
  • StringBuffer 底层char[],默认初始化16,操作方法由synchronized修饰,线程安全。
//扩容机制 在父类AbstractStringBuilder,每次 扩容为当前容量2倍+2
// minCapacity = count + len
private int newCapacity(int minCapacity) {
    // overflow-conscious code
    int newCapacity = (value.length << 1) + 2;
    if (newCapacity - minCapacity < 0) {
        newCapacity = minCapacity;
    }
    return (newCapacity <= 0 || MAX_ARRAY_SIZE - newCapacity < 0)
        ? hugeCapacity(minCapacity)
        : newCapacity;
}
    -- String为什么被设计为final?
  1. 重写和重载
    重写是针对父子关系,子类继承或实现父类或接口时,需要自己实现父类的抽象方法,满足自己的特殊需求。
    重载是针对一个类,方法或者构造器的个性定制。方法名相同,返回值、参数不同(参数必须不同,包括参数类型或个数)。
  2. equals 、==、hashCode
  • 知乎文章
  • 个人见解: == 比较可以看做数值比较,equals可以看做内容比较。equals相等,则hashcode一定相等,反之则不然。 重写equals()方法就必须重写hashCode()方法

转载于:https://my.oschina.net/heiseguoguo/blog/1547440

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值