欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

思考题解答

程序员文章站 2022-05-17 08:51:07
以下为一些面试可能会问到的问题...

以下为一些面试可能会问到的问题

1.抽象类为什么不能创建对象 

抽象类就是作为父类用来继承的,抽象类的抽象方法没有实现,就算创建了调用也没用,无法编译。

与具体的类比较: 

  1. 抽象类不能直接实例化,并且对抽象类使用new运算符会导致编译时错误。(虽然一些变量和值在编译时的类型可以是抽象的,但是其值必须为null,或者含有对非抽象类的实例的引用)
  2. 允许抽象类包含抽象成员
  3. 抽象类不能被密封

与接口比较:

相同点:
不能实例化对象,包含未实现的方法声明、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅仅是方法包括其他成员)
不同点:

  1. 可以实现很多个接口,但只能继承一个抽象类(解决多重继承)
  2. 抽象类当中可以存在非抽象的方法,可接口不能(它里面的方法只是一个声明,必须用public来修饰没有具体实现的方法)
  3. 抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量。
  4. 抽象类是对象的抽象,然而接口是一种行为规范。
  5. 接口只能做方法声明,抽象类中可以作方法声明,也可以作方法实现。
  6. 接口是设计的结果,抽象类是重构的结果
  7. 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别较高
  8. 抽象类主要用来抽象类别,接口主要用来抽象功能

2.SQL查询语句关键字的执行顺序

书写sql语句时各关键字的顺序:
select   from  where  group by   having   order by

执行顺序:
from  where  group by  having  select  order by

from:从哪张表检索数据

where:设置条件,过滤表中数据

group by:将上面过滤出的数据,进行分组

having:对上面已经分组的数据进行过滤的条件

select:指定查看结果集中的那个列或列的计算结果

order by:设置查看返回数据的方式

 3.Statement和PreparedStatement的区别  

1.Statement用于执行静态sql语句,在执行时,必须指定一个事先准备好的sql语句,也就是说sql语句是静态的。


2.PrepareStatement是预编译的sql语句对象,sql语句被预编译并保存在对象中。被封装的sql语句代表某一类操作,语句中可以包含动态参数“?”,在执行时可以为“?”动态设置参数值。

 

3.使用PrepareStatement对象执行sql时,sql被数据库进行解析和编译,然后被放到命令缓冲区,每当执行同一个PrepareStatement对象时,它就会被解析一次,但不会被再次编译。在缓冲区可以发现预编译的命令,并且可以重用。


PrepareStatement可以减少编译次数提高数据库性能。

本文地址:https://blog.csdn.net/qq_45879990/article/details/107322702