java基础:
为什么重写hashcode和equals?
- hash码由对象的内存地址或者对象的属性计算而出,可以作为键值对的键
- 例如hashmap中的key通过hashcode高低位异或计算
- 比如在hashmap中,hashcode是确定桶的位置,然后通过equals()方法找到正确的对象,即认为不同的对象有着相同的桶(32位hashcode映射到小的范围很容易重复)
加号+和StringBuilder的区别?
- +会产生大量的字符串对象
- StringBuilder是创建来操作可变字符串序列的,内部是char数组
怎么理解面向对象?
- 面向对象的特性
- 封装:封装是指将数据(属性,或者叫字段)和操作数据的方法(行为)捆绑在一起,形成一个独立的对象(类的实例)。
- 继承:继承允许一个类(子类)继承现有类(父类或者基类)的属性和方法。以提高代码的复用性,建立类之间的层次关系。
- 多态:同一个行为具有不同的表现形式;换句话说就是,执行一段代码,Java 在运行时能根据对象类型的不同产生不同的结果。
抽象类和接口的区别?
- 一个类只能继承一个抽象类,而能实现多个接口
- 抽象类的含义是is a,而接口是has a
- 注意: