第4天的笔记

问:
String、StringBuffer与StringBuilder之间区别?
第4天的笔记

问:
类变量(静态变量)和实例变量(对象变量)的区别?
类变量也叫静态变量,也就是在变量前加了static 的变量;
实例变量也叫对象变量,即没加static 的变量;区别在于:类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象

问:
Java中final、finally、finalize的区别与用法?
final:java中的关键字,修饰符。
finally:java的一种异常处理机制。
finalize:Java中的一个方法名。
final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等

问:
事务是什么?
事务的特性(ACID特性)
A:原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
C:一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
I:隔离性(Isolation)
一个事务的执行不能被其他事务干扰。
D:持续性/永久性(Durability)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

问:
什么是序列化?

问:
堆和栈的区别?
1、堆内存
1.什么是堆内存?
堆内存是是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。
2.堆内存的特点是什么?
堆其实可以类似的看做是管道,或者说是平时去排队买票的的情况差不多,所以堆内存的特点就是:先进先出,后进后出,也就是你先排队,好,你先买票

3、栈内存
1.什么是栈内存?
栈内存是Java的另一种内存,主要是用来执行程序用的,比如:基本类型的变量和对象的引用变量
.栈内存的特点
第一点:栈内存就好像一个矿泉水瓶,像里面放入东西,那么先放入的沉入底部,所以它的特点是:先进后出,后进先出

问:
JDBC编程六大步?
1)加载驱动程序。
2)建立连接。
3)创建语句。
4)执行语句。
5)处理ResultSet。
6 )关闭流
1)加载驱动程序
在连接到数据库之前,需要加载一个合适的驱动程序。
Class.forname(“com.mysql.cj.jdbc.Driver”);
驱动程序是一个实现接口java.sql.Driver的具体类。因为我用的数据库是MySQL,所以在括号里填com.mysql.cj.jdbc.Driver,像其他的数据库,会有不同的程序驱动类。
2)建立连接
连接到数据库需要使用到DriverManager类中的静态方法getConnection(databaseURL),其中databaseURL是数据库在Internet上的唯一标识符。
Connection connection=DriverManager.getConnection(“jdbc:mysql://localhost/Contacts?serverTimezone=UTC”, “root”, “Cc229654512”);
3)创建语句
Statement的对象可以为数据库传输SQL语句用于执行,并把运行结果返回程序。一旦创建Connection对象,就可以创建执行SQL语句的语句。
Statement statement=connection.createStatement();
4)执行语句
可以使用方法executeUpdate(String sql)来执行数据定义语言或者更新语句,可以使用executeQuery(String sql)来执行SQL查询语句。结果在ResultSet中返回。
ResultSet resultSet=statement.executeQuery(“select Name, PhoneNumber, Email, QQ, Note from Contacts”);
5)处理ResultSet
结果集ResultSet可以获得表的当前行,可以使用next方法移动行,可以使用各种get方法获取当前行的值。
while(resultSet.next())
{ System.out.println(resultSet.getString(1)+”\t”+resultSet.getString(2)+”\t”+resultSet.getString(3));
}

问:
java中的可变参数?
1.适用于参数的个数不确定,但是类型确定的情况,在此情况下,java将其当作数组来进行处理
2.注意可变参数只有一个,且通过放在最后的位置上
3。可变参数的语法:返回值类型 方法名(数据类型。。。参数名称){ }
4.使用只能是在jdk1.5之才能使用

问:
什么情况下用到抽象类?
如果一个类里边有抽象的方法就是抽象类,抽象方法就是在方法的定义中含有abstract关键字,而且只有方法的定义而没有方法的声明,如:abstract void abstractMethod();
有的时候设计一个类时并不需要创建这个类的实例,声明这个类的目的主要是为了让其他相关子类继承他,并实现抽象的方法,以实现多态的效果,这种情况下需要设计抽象类。

问:
抽象类和接口的区别?

1 .接口只能包含抽象方法,抽象类可以包含普通方法。
2. 接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。
3 .接口不包含构造方法,抽象类里可以包含构造方法。
4.抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,备继承类扩充
5.接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。
6. 如果许多类实现了某个接口,那么每个都要用代码实现那些方法
7.如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现。

问:
枚举,注解