java基础和javaweb面试

java基础

1.抽象类和接口的区别?

类型 Abstract Class Interface
定义 abstract class interface
继承 抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 接口只可以继承接口(一个或多个);子类可以实现多个接口
访问修饰符 抽象方法可以有public,protected和default这些修饰符 接口方法默认修饰符是public,你不可以使用其他修饰符
方法实现 可以定义构造方法,可以有抽象方法和具体方法 接口完全是抽象的,没有构造方法,且方法都是抽象的.不存在具体方法
实现方式 子类使用extends关键字来继承抽象类.如果子类不是抽象类的话,它需要提供抽象类中所有声明方法的实现 子类使用关键字implements来实现接口,它需要提供接口中所有声明的方法实现
作用 为了把相同的东西提取出来,即重用 为了把程序模块进行固化的契约,为了降低耦合

2.重载和重写的区别?

重载

方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的方法之间,互相称之为重载方法

重写

Java的子类和父类中有两个名称,参数列表和返回值类型都相同的方法.由于他们具有相同的方法签名,所以子类中的新方法将覆盖父类中原有的方法.
重写是父类与子类之间的多态性,对父类的方法进行重新定义

两者区别

重载是让类以统一的方式处理不同类型数据的一种手段.多个同名方法同时存在,具有不同的参数个数/类型.重载是一个类中多态性的一种表现.而重写是父类与子类之间的多态性,是对父类方法的重新定义.

3.stringBuffer和stringBuilder的区别?

线程安全

类型 Stringbuffer StringBuilder
线程安全 线程安全,所有公开方法都是synchronized修饰 线程不安全
缓冲区 每次获取toString都会直接使用缓冲区的toStringCache(最后一次toString的缓存值)值来构造一个字符串 每次toString都要复制一次字符数组,再构造一个字符串
性能 由于公开方法都加synchronized,性能很差 不加锁,性能远大于Stringbuffer

4.集合的体系架构

批注 2020-07-17 182119.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。