java基础回顾一

1.String、 StringBuffer、 StringBuilder 的区别?
(1)可变不可变
String:字符串常量,在修改时不会改变自身;若修改,等于重新生成新的字符串对象。
StringBuffer:在修改时会改变对象自身,每次操作都是对 StringBuffer 对象本身进行修改,不是生成新的对
象;使用场景:对字符串经常改变情况下,主要方法: append(), insert()等。
(2) 线程是否安全
String:对象定义后不可变,线程安全。
StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区大量数据。
StringBuilder:是线程不安全的,适用于单线程下操作字符串缓冲区大量数据。
(3) 共同点
StringBuilder 与 StringBuffer 有公共父类 AbstractStringBuilder(抽象类)。
StringBuilder、 StringBuffer 的方法都会调用 AbstractStringBuilder 中的公共方法,如 super.append(…)。
只是 StringBuffer 会在方法上加 synchronized 关键字,进行同步。最后,如果程序不是多线程的,那么使用StringBuilder 效率高于 StringBuffer

2.= = 和 equals 的区别?
equals 和= = 最大的区别是一个是方法一个是运算符。
= =:如果比较的对象是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址值是否相等。
equals():用来比较方法两个对象的内容是否相等。
注意: equals 方法不能用于基本数据类型的变量,如果没有对 equals 方法进行重写,则比较的是引用类型的变量所指向的对象的地址。

3.重载(overload)和重写(override)的区别? 重载的方法能否根据返回类型
进行区分?

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为
重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。
方法重载的规则:
1.方法名一致,参数列表中参数的顺序,类型,个数不同。
2.重载与方法的返回值无关,存在于父类和子类, 同类中。
3.可以抛出不同的异常,可以有不同修饰符。
方法重写的规则:
1.参数列表必须完全与被重写方法的一致,返回类型必须完全与被重写方法的返回类型一致。
2.构造方法不能被重写,声明为 final 的方法不能被重写,声明为 static 的方法不能被重写,但是能够被再次声明。
3.访问权限不能比父类中被重写的方法的访问权限更低。
4.重写的方法能够抛出任何非强制异常(UncheckedException,也叫非运行时异常),无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以
4.List 和 Map、 Set 的区别
array:数组,可以存储对象和基本数据类型,长度固定。
Collection:集合(单列),用于存储对象、不能存储基本数据类型(int,char等),但可以存储基本数据类型包装类(int-Integer,char-Character等),长度可变那么,为什么会出现这么多集合呢,我们可以把集合比如成容器。每个不同容器中对数据的存储方式不同,这种存储方式称为数据结构
List:单列数据元素有序,可重复。

ArrayList:数组。特点:有索引(脚标),所以查找快,增删后每个元素的索引都发生改变,所以增删慢,而且数组越长增删越慢
LinkedList:链表。特点:无索引,每个元素都包含下一元素地址,查找需要逐一进行,所以查找慢,但是增删快只需要改变元素后面的地址。

Vector:线程同步数组 基本抛弃使用。

Set:单列数据元素无序,不重复,无索引。

HashSet:哈希表。特点:线程非同步,保证元素唯一性原理:判断hashCode是否相同,相同在判断equals方法是否为true。
TreeSet:二叉树。特点:可对用两种方法对集合中元素排序,1.实现comparable接口,覆盖compareTo方法。2.集合建立时规定,并自定义比较类。

Map:双列集合,用于存放键值对。键值是唯一的,值可重复

HashMap:基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null键;
HashTable:线程安全,低效,不支持 null 值和 null 键;
5.Java的6种线程状态

转载摘自原文:https://blog.csdn.net/zgdwxp/article/details/99676659

Java线程状态定义于java.lang.Thread.State,共6种状态:

状态定义 状态名 解释
NEW 初始 构造一个线程实例后、启动前,线程处于该状态(任何方式创建都是如此,点击可查看线程创建方法
RUNNABLE 就绪/运行 该状态包含了经典线程模型的两种状态:就绪(Ready)、运行(Running):
-------------------
就绪状态表示有资格运行,但如果一直没拿到时间片,就一直是就绪状态
* 初始状态的线程,start()方法被调用后,就进入RUNNABLE状态,表示就绪(Ready);并开始等待CPU时间片;
* 等待或阻塞状态结束,如sleep()结束、或其他线程join()结束、拿到锁,也会进入就绪状态
* 线程时间片用完,线程的yield()方法会被调用,线程随即进入就绪状态
-------------------
当线程调度选中该线程、并分配了CPU时间片后,该线程尽管处于Runnable状态,但实际上是运行(Running);
* 这是线程进入运行状态的唯一方式
BLOCKED 阻塞 通常与锁有关系,表示线程正在获取有锁控制的资源,比如进入synchronized代码块,获取ReentryLock等
WAITING 等待 进入该状态的线程,等待被显式唤醒(其他线程发出通知或中断,如notify/notifyAll, 或者另外的线程终止如join的情况),否则处于无限期等待
TIMED_WAITING 超时等待 该状态不同于WAITING,它可以在指定的时间后自动唤醒;
* 处于这种状态的线程不会被分配CPU执行时间;
* Thread.sleep()执行后,线程就会进入该状态
TERMINATED 终止 表示该线程已经执行完毕;
* 线程Run方法体结束、或主线程(守护线程)的main()方法完成时,线程就认为终止了;
* 线程对象可能还存活,但不再是单独执行的线程
* 终止的线程不允许再调用Thread.start()方法

传统线程模型的3种或5种状态

三种状态:就绪、运行、等待
五种状态:新建、就绪、运行、等待、退出

上面已经把RUNNABLE拆解成就绪和运行状态,另外Java的BLOCKEDWAITINGTIMED_WAITING都属于传统模型的等待状态。

6.java支持多继承吗
  java不支持多继承,只支持单继承(即一个类只能有一个父类)。但是java接口支持多继承,即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)
  
7.final、 finally、 finalize 的区别?
1) final:用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。
2) finally:异常处理语句结构的一部分,表示总是执行。
3) finalize: Object 类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法
提供垃圾收集时的其他资源回收,例如关闭文件等。该方法更像是一个对象生命周期的临终方法,当该方法
被系统调用则代表该对象即将“死亡”,但是需要注意的是,我们主动行为上去调用该方法并不会导致该对
象“死亡”,这是一个被动的方法(其实就是回调方法),不需要我们调用。

8事务是什么,以及事务四个特性
事务:数据库操作的最小工作单元,作为单个逻辑工作单元执行的操作;这些操作作为一个整体一起向系统提交,要么都执行成功、要么都执行失败;事务是不可再分割

事务的四大特性:
1)原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执
行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
(2)一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
(3)隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相
同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称
为串行化,为了防止事务操作间的混淆, 必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
(4)持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

发布了32 篇原创文章 · 获赞 13 · 访问量 1536

猜你喜欢

转载自blog.csdn.net/weixin_38068605/article/details/103212721