文章目录
- 重载与重写
- 抽象类与接口
- 面向对象
- [a = a + b 与 a += b 的区别](#a = a + b 与 a += b 的区别)
- final、finalize、finally
- String、StringBuild、StringBuffer
- 位运算
- 反射
重载与重写
重载:是在同一个类中,方法名相同,方法参数类型,个数不同,返回类型不同。
重写:子类重写父类的方法,方法名,参数等等都一致。主要用于面向对象多态的实现条件之一。就是父类的引用指向子类的对象。
抽象类与接口
抽象类:用 abstract 修饰的类为抽象类,里面可以定义抽象方法,普通方法,局部变量,如果子类不是抽象类继承抽象父类需要重写抽象父类的方法。
接口:Interface 关键字,里面只能定义公共抽象的方法,局部变量也一定为公共静态常量,实现该接口的实现类必须重写该接口的全部方法。
一个类可以实现多个接口,但是只能继承一个类。
面向对象
面向对象三个特性
第一封装:就是将方法和变量,封装在类中,对外展现需要暴露的方法,隐藏内部实现的细节。使用时通过创建一个对象来调用类中的方法,创建一个一个类似于模块化的结构,每个类各司其职,便于管理与维护,也起到代码复用的效果。
第二继承:通过继承,子类可以获取父类私有以外的方法和变量。实现了代码的复用。
第三多态:
第一种是编译时多态,主要通过方法的重载实现。
第二种是运行时多态,对象引用的具体类型在运行时才确定,通过子类继承父类并重写父类的方法,然后使用父类的引用指向子类的对象实现。
a = a + b 与 a += b 的区别
a += b 会自动转化类型,比如 bype a = 127 , bype b = 127 , a += b , a 的类型转为 int 型。
a = a + b 时,,比如 bype a = 127 , bype b = 127 , a = a + b,会报错,超出类型的范围。
final、finalize、finally
final,关键字修饰的方法,变量,在初始化后就不能修改。
finalize()方法,是在内存对象被垃圾回收算法清除之前调用的方法,可以重写用来做一些清理工作。
finally是try-catch 异常处理的结构,finally是一定会被执行的,一般用于释放数据等等。
String、StringBuild、StringBuffer
String 是不可变的字符串,每当修改它时,都会创建一个新的字符串。
StringBuilder 和 StringBuffer 是可变的字符串,每当修改它时,都是在原来的字符串上修改。两者的区别在于:StringBuilder 是线程不安全的,但是效率比较快,StringBuffer 是线程安全的,但是效率比较慢。
所以如果需要使用频繁修改的字符串,建议使用 StringBuilder 和 StringBuffer,这样可以避免资源造成的浪费。如果是在并发的情况下,使用 StringBuffer 保证线程安全。
位运算
左移符 x >> 1,等同于 x 乘 2 ,位运算中,低位补 0
右移符 x << 1 ,等同与 x 除 2 ,位运算中,高位补 0,低位补 1
无符号右移 >>>,忽略符号位,空位都以 0 补齐。
反射
程序在运行时的时候,通过反射来获取类信息,用类来调用方法与属性,或者通过反射获取对象,用对象来调用方法与属性。
我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。