Java基础知识

Unit1 抽象和封装
1. 简述类的封装的定义、具体步骤和优点:【P32】
封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的存储;在赋值方法中,加入对属性的存取控制语句。
封装的好处:隐藏类的实现细节;让读者只能通过程序规定的方法来访问数据;可以方便地加入存取控制语句,限制不合理操作。
2. 方法重载的判断依据:
 必须在同一个类里。
 方法名相同。
 参数列表(个数,数据类型)不同。
 与方法返回值和访问修饰符没有任何关系。
Unit2 继承
1. java中的继承:
继承是面向对象的三大特性之一,Java中只支持单继承,即每个类只能有一个直接父类。继承表达的是is a的关系。
2. 企业面试题:请写出java.lang.Object的6个方法:
Object obj = new Object();
obj.equals(Object obj);
getClass();
hashCode();
notify();
notifyAll();
toString();
wait();
3. 方法的重写必须满足下列要求:
 重写方法和被重写方法必须具有相同的方法名。
 重写方法和被重写方法必须具有相同的参数列表。
 重写方法的返回值类型必须和被重写方法的返回值类型相同,或是其子类。
 重写方法不能缩小被重写方法的访问权限。
4. 重载(overloading)和重写(overriding)有什么区别和联系?
(1) 重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符无关。
(2) 重写涉及的是子类和父类之间的同名方法,要求方法名相同,参数列表相同,返回值类型相同(或是其子类),访问修饰符不能严于父类。
5. 抽象类中可以有构造方法吗?
抽象类可以有构造方法,其构造方法可以被被本类的其它 构造方法调用,若此构造方法不是由private修饰,也可以被本类的子类中的构造方法调用。
6. abstract与final的用法:
abstract可以用来修饰类和方法,不能用来修饰属性和构造方法。
final可以用来修饰类、方法和属性,不能修饰构造方法。
7. 抽象类和抽象方法的特点:
 抽象类和抽象方法都是通过abstract来修饰。
 抽象类不能被实例化、抽象类中可以没有、一个或多个抽象方法,甚至全部方法都可以是抽象方法。
 抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类。子类必须重写所有的抽象方法才能被实例化,否则子类还是一个抽象类。
8. 封装时会用到多个权限控制符来修饰成员变量和方法:
 private:成员变量和方法只能在其定义的类中被访问,具有类可见性。
 默认(default):类名前,不加任何访问修饰符,就是默认的为default。成员变量和方法只能被同一个包里的类访问,具有包可见性。
 protected:可以被同一包中的类访问,被同一项目中不同包中的子类访问。
 public:可以被同一个项目中的所有类访问,具有项目可见性,这是最大的访问权限。

Unit3 多态
1. 简述多态的概念,子类和父类之间转换时应遵循的规则:
多态:是具有表现多种形态的能力的特征。专业说法:同一个实现接口,使用不同的实例而执行不同的操作。
子类转换成父类(向上转换)时的规则:
 将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换。
 此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。
 此时通过父类引用变量无法调用子类特有的方法。
父类到子类的转换(向下转型)
将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。
2. 实现多态的方式:
父类引用指向子类对象
使用父类作为方法的形参(定义方法)
使用父类作为方法的返回值
继承的存在
Unit4 接口
 接口中可以定义常量,不可以定义变量,并且在定义时赋初始值。
 接口之间可以使用extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。接口可以继承实体类。
 抽象类利于代码复用,接口利于代码的扩展和维护。
 extends关键字必须位于implements之前。
接口成员的特点
成员变量:
只能是常量 ,且是静态的。
默认修饰符 public static final
构造方法 (Object类)
没有,因为接口主要是扩展功能的,而没有具体存在
成员方法
只能是抽象方法
默认修饰符 public abstract
Unit6 异常
1. throw和throws的区别表现在以下3个方面:
 作用不同:throw用于在程序中抛出异常;throws用于声明在该方法内抛出了异常。
 使用的位置不同:throw位于方法体内部,可以作为单独语句使用;throws必须跟在方法参数列表的后面,不能单独使用。
 内容不同:throw抛出一个异常对象,而且只能是一个;throws后面跟异常类,而且可以跟多个异常类。
2.日志根据记录内容的不同,主要分为3类:
 SQL日志:记录系统执行的SQL语句。
 异常日志:记录系统运行中发生的异常事件。
 业务日志:记录系统运行过程,如登录、操作记录。
3. 常见的异常类型:

Unit7集合框架
1. 简述ArrayList、Vector和LinkedList的区别:【P184】
 ArrayList:
底层数据结构是数组,查询快,増删慢。
线程不安全,效率高。
 Vector:
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
 LinkedList:
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
2. Java集合框架由:
对外提供的接口、接口的实现和对集合操作的算法 三部分组成。
3. 简述Java集合框架的三大类接口及其区别:
【其位于java.util.*包下面】【P184】
 List提供的是一个有序(存储顺序和取出顺序)的集合
 Map提供了一个映射(对应)关系的集合数据结构
 Set提供的是一个无序的集合
3.Hashtable与HashMap的区别:
 Hashtable继承自Dictionary类,而HashMap实现了Map接口。
 Hashtable是线程安全的;HashMap重速度,轻安全,是线程非安全的。
 Hashtable不允许null值(key和value都不允许),HashMap允许(key和value都允许))。
4. 集合和数组的区别:
不同点 数组 集合
1.长度不同 数组长度固定 集合长度可变
2.内容不同 必须存储同一类型的元素 可以存储不同类型的元素
3.数据类型问题 可以存储基本和引用数据类型 只能存储引用类型
5. Java集合的区别:
Collection接口存储一组不唯一(允许重复),无序的对象。
Set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。
List接口继承Collection,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象。
Map接口存储一组成对的键-值对象,提供Key(键)到Value(值)的映射。Map中的key不要求有序,不允许重复。Vaule同样不要求有序,但允许重复。

Unit8 JDBC
1.JDBC访问数据库的步骤:
1) 加载JDBC驱动
2) 与数据库建立连接
3) 创建Statement或PreparedStatement对象
4) 发送SQL语句,并得到返回结果,
5) 处理返回结果
2.Statement与PreparedStatement的区别
PreparedStatement Statement
代码量 多 少
是否使用Sql语句作为参数 使用,会解析和编译该SQL语句 不使用,每次调用方法执行SQL语句时都要进行SQL语句的解析和编译操作。
安全 传入的任何数据都不会和已经编译的SQL语句进行拼接,避免了SQL注入攻击。
3.PreparedStatement比Statement好在哪里?
提高了代码的可读性和可维护性
提高了SQL语句执行的性能。
提高了安全
4.JDBC的主要API及作用:
JDBC的API主要做三件事:与数据库建立连接、发送SQL语句、处理结果。
 DriverManager:依据数据库的不同,管理相应的JDBC驱动。
 Connection接口:负责连接数据库并担任传送数据的任务。
 Statement接口:由Connection产生,负责执行SQL语句。
 ResultSet接口:负责保存和处理Statement执行后所产生的查询结果。
 PreparedStatement接口:Statement的子接口,也由Connection产生,同样负责执行SQL语句。与Statement接口相比,具有安全性、高性能、高可读性和高可维护性的特点。
Unit9 数据访问层
1. 简述对DAO模式的理解:
数据访问模式—DAO模式:是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。
持久化:将程序中的数据在瞬时状态和持久状态间转换的机制。
2. DAO的优势在于它实现了两次隔离:
隔离了数据访问代码和业务逻辑代码 。符合“单一职能”原则,降低了耦合性,提高了可复用性。
隔离了不同数据库实现。符合“开—闭”原则,降低了代码的耦合性,提高了代码可扩展性和系统的可移植性。
3. 一个典型的DAO模式主要由以下及部分组成:
DAO接口:把对数据库所有操作定义成抽象方法,可以提供多种实现。
DAO实现类:针对不同数据库给出的DAO接口定义方法的具体实现。
实体类:用于存放和传输实体数据。
数据库连接和关闭工具类:避免了数据库连接和关闭代码的重复使用,方便修改。
4. 分层开发的优势:
 每一层专注于自己功能的实现,便于提高质量。
 便于分工协作,从而提高效率。
 便于代码复用。
 便于程序扩展。
5. 分层的特点:
 每一层都有自己的职责。
 上一层不用关心下一层的实现细节,上一层通过下一层提供的对外接口来使用其功能。
 上一层调用下一层的功能,下一层不能调用上一层的功能。下一层为上一层服务,而不使用上一层的功能。
6. 在分层开发中,分层也应检查以下原则:
 封装性原则:简单而言,就是每个层次向外提供公开的统一接口,而隐藏内部的功能实现细节,其它层次不能也没有必要了解其内部细节。
 顺序访问原则:下一层为上一层服务,而不使用上一层提供的服务。业务逻辑层可以访问数据访问层的功能,而数据访问层不能访问业务逻辑层功能。
7. 在分层结构中,实体类的作用和主要特征:
作用:执行数据访问操作。
特征:
实体类的属性一般用private修饰。
根据业务需要和封装性要求对实体类的属性特工getter/setter方法,负责属性的读取和赋值,一般使用public修饰。
对实体类提供无参构造方法,根据业务需要提供相应的有参构造方法。
实体类最好实现java.io.Serializable接口,支持序列化机制,可以将该对象转换成字节序列而保存在磁盘上或在网络上传输。
如果实体类实现了java.io.Serializable接口,就应该定义属性serialVersionUID,解决不同版本直接爱你序列化的问题,eg:
private static final long serialVersion=207005602556126480L;
Unit10 File I/O
1.使用FileInputStream读取文本文件的具体使用步骤如下:
1) 引入相关的类。
2) 创建一个文件输入流对象。
3) 利用文件输入流的方法读取文本文件的数据。
4) 关闭文件输入流对象。
2.简述Java中,字节流的分类:
(1) 按照流向划分,可分为输入流和输出流
输出流:OutputStream和Writer作为基类
输入流:InputStream和Reader作为基类
(2) 按照所操作的数据单元的不同,流又可以分为字节流和字符流
字节流:字节输入流InputStream基类;字节输出流OutputStream基类
字符流:字符输入流Reader基类;字符输出流Writer基类
3.文本文件读写过程中需要处理的异常有哪些?
FileNotFoundException
IOException
*本章总结
File类可用于访问文件或目录的属性。
流,是指一连串流动的字符,是以先进先出的方式发送和接受数据的通道。程序和数据源之间是通过流联系起来的。
流可以分为输入流和输出流,也可以分为字节流和字符流。
FileInputStream和FileOutputStream以字节流的方式读写文本文件。
BufferedReader和BufferedWriter以字符流的方式读写文本文件,而且效率更高。
DataInputStream和DataOutputStream可用于读写二进制文件。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值