JAVASE基础

目录

 Vector与ArrayList

重写与重载的关系

 该过程产生了2个String对象,一个在堆中,一个在常量池中。

JavaSE中几种常见的线程池

 没有WAITING这个状态

==和equals

接口是一组方法签名,是抽象的,只是一种规范

​编辑 筛选满足条件的分组,HAVING必须和GROUP BY一起使用

事务的四大特性 原子性,一致性,隔离性,持久性

创建线程的三种方式


 

JAVASE基础_第1张图片

 Vector与ArrayList


相同点:

1.都实现的List接口

2.底层数据结构都是数组且都属于动态数组

3.底层数组默认初始容量都是10

不同点:

1.Vector是线程安全的,因为它在每个公共方法(add,get)都使用了synchronized关键字,对整个方法进行同步,当一个线程在执行Vector的方法期间对Vector进行修改时,其他线程对于同一个Vector的修改请求会被阻塞,直到当前线程执行完毕释放锁。

2.ArrayList当容量不足时,扩展底层数组的容量为当前容量的1.5倍,而Vector扩展为1倍

3.ArrayList在遍历时性能更好

JAVASE基础_第2张图片

重写与重载的关系

重载:

重载是在一个类里面可以定义多个只有名称相同的方法,方法名称必须相同,参数列表必须不同(类型,顺序,个数),返回值类型无所谓。

比如无参构造和有参构造

重写:

重写是子类继承父类时,子类中定义的方法名称,参数列表,返回类型都与父类相同,但是实现逻辑可能不同,并且在方法上面要加上@Override注解,用来明确表示该方法是子类重写父类的方法。

比如myservlet继承HttpServlet,然后重写其service方法

JAVASE基础_第3张图片

 该过程产生了2个String对象,一个在堆中,一个在常量池中。

String对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空间来存储修改之后的对象;而StringBuffer和StringBuilder对象的值是可以被修改的;
StringBuffer几乎所有的方法都使用synchronized实现了同步,线程比较安全,在多线程系统中可以保证数据同步,但是效率比较低;而StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder,但是效率比较高。

JAVASE基础_第4张图片

JavaSE中几种常见的线程池

  1. FixedThreadPool(固定大小线程池):该线程池维护固定数量的线程,适用于任务数量已知且需要控制线程数量的场景。当任务提交到该线程池时,如果有空闲线程,则立即执行;如果所有线程都在工作,则新的任务会在队列中等待。线池的大小固定,不会自动调整。

  2. SingleThreadPool(单线程池):该线程池只有一个线程,适用于需要保证任务按照顺序执行、并且不会并发执行的场景。

  3. CachedThreadPool(缓存线程池):该线程池根据需要创建新的线程,并在60秒钟内回收空闲线程。适用于任务数量不确定、且需要快速执行的场景。如果提交的任务可以得到及时处理,则会尽量重用空闲线程;如果没有空闲线程,则会创建新的线程。

  4. ScheduledThreadPool(定时任务线程池):该线程池可以定时或延迟执行任务。适用于需要在一定的延迟后执行任务,或者按照一定的时间间隔循环执行任务的场景。

JAVASE基础_第5张图片

java的参数传递在参数为基本数据类型(int,float...)时是值传递,就是传递的是副本,在方法内部对参数值进行修改不会改变参数原有的值

而在参数为引用类型(对象 ;数组;数组也是引用数据类型)时, 传递的是在内存中的地址,在方法内部对参数进行修改会改变其原有的值。

JAVASE基础_第6张图片

 没有WAITING这个状态

WAITING是线程的一种等待状态

JAVASE基础_第7张图片

==和equals

对于基本数据类型来说, == 就是比较的他们的值。

而对于引用类型来说, == 比较的就是它们所指向对象的内存地址。

.equals会先判断类型,再判断值,不会去比较地址

还有自动拆箱:

当一个操作数是基本类型而另一个操作数是对象类型时,Java 会自动将对象类型拆箱为对应的基本类型进行比较

所以第二个sout也是true

JAVASE基础_第8张图片

这个选项是错的

接口是一组方法签名,是抽象的,只是一种规范

并不会继承Object类,但是所有的类包括抽象类都继承于Object,所以实现接口的类还是能用Object里面的方法。

 筛选满足条件的分组,HAVING必须和GROUP BY一起使用

 

事务的四大特性 原子性,一致性,隔离性,持久性

原子性
事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败。
任何一项操作都会导致整个事务的失败,同时其它已经被执行的操作都将被撤销并回滚,只有所有的操作全部成功,整个事务才算是成功完成。

一致性
事务的一致性是指事务在执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处以一致性状态。

隔离性
事务的隔离性是指在并发环境中,并发的事务是互相隔离的,一个事务的执行不能被其它事务干扰。也就是说,不同事物并非操作相同数据时,每个事务都有完整的数据空间。
一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务是不能互相干扰的。

持久性
事务的持久性是指事务一旦提交后,数据库中的数据必须被永久的保存下来。即使服务器系统崩溃或服务器宕机等故障。只要数据库重新启动,那么一定能够将其恢复到事务成功结束后的状态。

 

创建线程的三种方式

1、继承 Tread类, 重写 run方法

2、实现Runnable接口,实现 run方法

3、实现 Callable接口,实现 call方法,该方式可以获取线程的执行结果

JAVASE基础_第9张图片

接口中自带public 修饰符,所以B和C是错误的

JAVASE基础_第10张图片

A. ConcurrentHashMap
D. Vector
H. HashTable

JAVASE基础_第11张图片

 这些都是事件类型

A. time(时间)
B. timestamp(时间戳)
C. date(日期)
D. datetime(日期时间)
E. year(年份)

数组的equls会逐个比较2个数组的元素

你可能感兴趣的:(java,开发语言)