8.2总结

继承和实现的区别:

1.修饰符不同:

继承修饰符extends,实现修饰符implements

2.单继承,多实现,Java允许一个类仅能继承一个其他类,即一个类只能有一个父类,这个限制被称为单继承性,而接口允许多继承,弥补了Java类只能单继承的缺陷。

String str = new String("123");该过程首先由于"123"是一个字符串常量,他会被存储在字符串常量池中,在执行代码的时候,如果常量池里面已经有了"123",那么久不会再创建新的对象,而是直接引用常量池中已经存在的对象。然后new String()是一定会创建一个对象的;

List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:

1.ArrayList是最常用的List实现类,内部是通过数组来实现的,它允许对元素进行快速随机访问,数组的缺点是每个元素之前不能有间隔,当数组的大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中,当从ArrayList的中间位置插入或者删除元素的时候,需要对数组进行复制,移动,代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

2.Vector和ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但是实现同步要花很长的时间,因此,访问它比访问ArrayList慢

3.LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。

4.Vector是线程(Thread)同步(Synchronized)的,所以它也是线程安全的,而Arraylist是线程异步(ASynchronized)的,是不安全的。如果不考虑到线程的安全因素,一般用Arraylist效率比较高。

5.如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.如过在集合中使用数据量比较大的数据,用vector有一定的优势。Vector一次增加一倍长度,Arraylist一次增加一半长度

6.查找指定位置的数据花费时间:ArrayList和Vector都是O(1),而LinkedList是O(i);

移动指定位置的数据花费时间: ArrayList和Vector都是O(n-i),而LinkedList是O(1);

Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差

Java中的参数传递

Java中的参数传递是值传递的。对于基本数据类型,传递的是其值的副本;对于对象,传递的是其引用的副本。这意味着在方法中对基本数据类型进行修改不会影响原始值,但在方法中对对象属性的修改会影响原始对象

Java中的集合类和底层实现

  1. ArrayList:实现了可变大小的数组。它使用数组作为其底层数据结构。
  1. LinkedList:实现了链表数据结构。它使用双向链表作为其底层数据结构。
  1. HashSet:实现了基于哈希表的集合。它是通过HashMap实现的,底层使用HashMap的键来存储元素,值则被设置为一个固定的Object对象。
  1. TreeSet:实现了基于红黑树(自平衡二叉搜索树)的集合。它使用TreeMap作为其底层数据结构。
  1. HashMap:实现了基于哈希表的映射。它使用数组和链表(或红黑树)的组合来实现哈希桶。
  1. TreeMap:实现了基于红黑树的映射。它使用红黑树作为其底层数据结构。
  1. LinkedHashMap:实现了具有可预知迭代顺序的哈希表。它使用哈希表和双向链表的组合来实现。
  1. PriorityQueue:实现了优先队列(最小堆)。它使用数组来实现堆结构。

==和equals()

“==”和equals 最大的区别是

  • “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。
  • equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。

Java中线程池种类

  1. FixedThreadPool(固定大小线程池):该线程池维护固定数量的线程,适用于需要限制线程数量的场景。当线程池中的线程都在执行任务时,新任务会进入等待队列,直到有线程可用才会执行。
  1. CachedThreadPool(可缓存线程池):该线程池的线程数量不固定,会根据任务的数量自动调整。适用于执行大量短期任务的场景,当线程空闲超过指定时间(默认为60秒)时,线程会被销毁;而当任务量增加时,会重新创建新的线程处理任务。
  1. SingleThreadExecutor(单线程线程池):该线程池只包含一个线程,适用于需要保证任务按顺序执行的场景。当线程因异常退出时,会创建一个新的线程来替代,确保任务持续执行。
  1. ScheduledThreadPool(调度线程池):该线程池可用于执行定时任务和周期性任务,可以指定任务的执行时间或间隔时间。可以通过

 接口提供的方法来安排任务的执行。ScheduledExecutorService

  1. WorkStealingPool(工作窃取线程池):该线程池是在Java 1.8版本引入的,基于Fork/Join框架实现,适用于执行大量并行任务的场景。线程池中的线程通过工作窃取算法,可以从其他线程的任务队列中获取任务并执行。

重写和重载

重写是子类对父类中已有方法的实现进行重新编写,方法名、参数列表和返回类型都必须相同;重载是在同一个类中定义多个具有相同方法名但参数列表不同的方法,它们具有不同的参数类型、参数个数或参数顺序。

事务的四大特性

原子性,一致性,隔离性,持久性

创建线程的三种方式

1.继承Thread类,

2.实现Runnable接口

3.实现Callable接口

Java集合

(5条消息) java集合超详解_phial03的博客-CSDN博客

 

  1. sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时候会自动恢复。调用sleep不会释放对象锁
  2. wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法后线程才进入对象锁定池准备获得对象锁进入运行状态。

方法的重载是指在一个类中定于多个不同名的方法 ,但要求每个方法具有不同的 参数 的类型或参数的个数。 

SDK,JVM,JRE,JDK

  1. SDK(Software Development Kit):软件开发工具包,包含用于开发软件应用程序的工具和资源。
  2. JDK(Java Development Kit):Java开发工具包,是一个更完整的包,包含了用于开发Java应用程序的所有工具和资源,包括编译器、调试器、JVM和类库等。
  3. JRE(Java Runtime Environment):Java运行时环境,包含JVM和Java类库等运行时所需的组件,用于运行Java程序。
  4. JVM(Java Virtual Machine):Java虚拟机,负责解释和执行Java字节码。

float在定义时要加个f
flost f = 1.1f;

静态方法和非静态方法

静态方法是使用static关键字修饰的方法,又叫类方法。

  • 在静态方法中可以调用静态方法。
  • 在静态方法中不能调用非静态方法。
  • 在静态方法中可以引用类变量。
  • 在静态方法中不能引用成员变量,即没有static修饰的变量
  • 在静态方法中不能使用super和this关键字

 非静态方法是不含有static修饰的普通方法,又称为实例方法,成员方法。

  • 在普通方法中,可以调用普通方法。
  • 在普通方法中,可以调用静态方法
  • 在普通方法中,可以引用类变量和成员变量
  • 在普通方法中,可以使用super和this关键字

让线程停止的方法

  • sleep():导致此线程暂停执行指定时间。
  • stop():这个方法将终止所有未结束的方法,包括run方法。
  • synchronized():对象锁。
  • yield():当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。
  • wait():当前正在被服务的线程需要睡一会,醒来后继续被服务

抽象类和接口

(9条消息) Java中的抽象类和接口_一个抽象类包含多个接口_是小鱼儿哈的博客-CSDN博客

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值