java面试题String,抽象类与接口的区别

一.抽象类与接口的区别。

相同点:
都不能被实例化

区别:

1.一个接口可以继承多个接口,但一个类只能有一个父类,类可以实现多个接口;

2.接口和抽象类必须实现其中所有的方法,抽象类中如果有未实现的抽象方法,那么子类也需要定义为抽象类。抽象类中可以有非抽象的方法。

3.抽象类中可以包含普通方法,但接口中只能包含public abstract方法(JDK 1.8之前);JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰

4.抽象类中的成员变量没有访问权限的限制,但接口中的变量只能被public static final修饰;

5.接口强调特定功能的实现,而抽象类强调所属关系;

二.String,StringBuffer,StringBuilder三者的区别。

1.运行速度方面:StringBuilder > StringBuffer > String。

2.可变性:String是final定义的,是字符串常量,一旦创建之后该对象是不可更改的(若重新给原来的引用赋值,改变的只是引用的指向位置,但常量池里还是保留原来的字符串),但后两者的对象是是可以更改的。

3.线程安全方面:StringBuilder是线程不安全的,而StringBuffer是线程安全的。StringBuffer线程安全的一个原因是很多方法例如append里,是带有synchronized关键字,所以可以保证线程是安全的,而StringBuffer是没有的,所以是线程不安全;

三.try catch finally的三者作用。

其中try{...}这一块代码是需要被检测异常的代码;而catch{...}这一段是处理异常的代码;最后的finally{...}代码块是一定会被执行的代码。

 

四.Struts,SpringMVC,Springboot三者的区别。

struts2 和 springMvc:

1.Springmvc的入口是servlet前端控制器(DispatcherServlet),struts2入口是一filter过滤器(StrutsPrepareAndExecuteFilter);

2.SpringMVC开发效率高于Struts2;

3.struts2通过在action类中定义成员变量接收参数,它使用多例模式管理action.

4.springmvc通过在coontroller方法中定义形参接收参数,springmvc可以使用单例模式管理controller.      

5.springMvc属于一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂;

6. springBoot框架相对于springMvc框架来说,更专注于开发微服务后台接口,不开发前端视图;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值