一、面向对象有几大特征:
继承、多态、封装
1、继承:指一个新的类拥有已知类的属性和方法,并且新类可以通过覆盖/重写来拓展已知类中方法的能力;
2、多态:一个类当中可以拥有多个同名但不同参数的方法,主要通过三个方法来实现:
a、子类覆盖父类方法;
b、一个类中的方法重载实现;
c、子类对象当做父类对象来实现;
3、将一个事物封装成一个类,减少耦合,隐藏细节。通过对外开放接口来实现与外界的交互。
二、覆盖(重写)、重载
1、覆盖(重写):当A类继承了B类,并且A类丰富了B类中的C()方法,那么我们就可以叫做重写。重写并不会改变父类B中方法名、参数、返回值及参数类型。
2、重载:当我们在一个类中拥有多个同名的方法,那么实现这个功能的就叫做重载,通过修改方法中参数的数量及参数类型,来达到重载。
三、JDK、JRE和JVM
1、JDK:开发工具包,Java开发的核心组件,提供了编译、调试和运行的所有工具,可以运行文件和二进制文件,一般是指的一个特定软件;
2、JRE:Java运行环境,是JVM的一种实现,包含JVM,但不包含编译和调试工具。
3、JVM:虚拟机,实现了Java的跨平台运行,提供了内存管理、垃圾回收和安全机制。JVM在运行中会隔离本机的系统及硬件,开辟一个独立的运行空间。
四、抽象类(abstract)和接口(interface)
1、抽象类中可以没有抽象方法,也可以抽象方法和非抽象方法共存;
2、接口在JDK8之前只可以存在抽象方法,在JDK8后可以用Defualt来定义一个方法;
3、抽象类是单继承,接口可以实现多个父接口;
4、抽象类中可以有普通的成员变量,接口中只能有static final定义的常量,必须被初始化,只有常量,没有变量;
五、Java中8中基础类型和占用字节数
1、byte:1字节
2、short:2字节
3、int:4字节
4、long:8字节
5、double:8字节
6、foalt:4字节
7、char:2字节
8、boolean:未定义字节数
六、Java中的4个元注解
元注解指的是,注解其他注解的注解
1、@Target:定义这个注解可以用到哪里(TYPE、MTHOED、FIELD。。。)
2、@Retention(保留策略):定义注解在什么时候可以起到作用或者说什么什么时候失效(RUNTIME、CLASS)
3、@Documented:只在javadoc中可以运行,留下日志
4、@Inherited:注解该注解是否可以被继承;
七、Java的反射机制
指的是在程序运行中,我们可以知道一个类的属性和方法。对于任意一个对象,我们都可以调用它的属性和方法。那就是动态的获取信息和动态调用对象方法,就叫做反射机制。
八、Java中Exception和error的区别
1、Exception是在程序运行中可预料,并将其捕获该异常,将其处理掉。分为了编译期异常和运行起异常;
编译期异常:在加载一个项目的时候,检测出了一段方法体出现问题,抛出的异常;
运行期异常:在程序运行过程中产生的异常;
捕获异常需要遵循的几个点:
a、尽量少使用Exception,而捕获更为详细的异常
b、try...catch不要括的太大,不容易定位
c、一定要打日志,方便处理
d、当当前异常无法处理时,应该抛给上层异常
2、error是运行中正常不可能发生的错误,也是不可预料的。内存溢出(OutOfMemoryError)
内存溢出就需要了解GC垃圾处理模式了,后续会说到。
九、Java中的值传递和引用传递
1、值传递:相当于copy出去了一份副本,当副本改变时,不会影响到源数据;
2、引用传递:引用可以理解为钥匙,我们配了一把钥匙出去,当通过钥匙改变房屋布局时,那么第一把钥匙打开房门时,已经发生了变化,也就是引用传递会影响到源引用;
十、JIT编译器
叫做即时编译器,把运行的热点代码便以为本地的机器代码,并进行各层次的优化,增加缓存功能,优化主要有,逃逸分析、锁消除等;
当一个对象的方法被引用,那么就会方法逃逸,而且当检测到没有并发时,会消除方法上的synchronized锁。
十、StringBuffer和StringBuilder的区别
1、StringBuilder比StringBuffer运行速度快,效率更高;
2、StringBuilder非线程安全,StringBuffer线程安全;
3、一般情况下都是单线程运行,用StringBuilder更好些。
十一、Java序列化与反序列化的过程
1、将一个对象通过字节流形式保存到本地,就叫做序列化;
2、将一个本地文件转化为字节流,就叫做反序列化;
十二、equals与hashcode方法关系
网友评论