java 考试重点_JAVA基础部分知识点梳理复习

一、Java 基础篇

\1. Object 有哪些常用方法?大致说一下每个方法的含义

getClass()获得运行时当前类的类型

toString() 将当前对象信息以字符串形式输出

equals() 比对字符串是否相同 在Object中,equals和==是一样的。

hashCode() 方法用于返回字符串的哈希码。

wait() 阻塞当前线程,在其他对象调用此对象的notify()时进行唤醒

\2. Java 创建对象有几种方式?

new

反射

实现Cloneable接口,重写clone方法

\3. 获取一个类对象的方式有哪些?

方法 1:类型.class,例如:String.class

方法 2:对象.getClass(),例如:”hello”.getClass()

方法 3:Class.forName(),例如:Class.forName(“java.lang.String”)

\4. ArrayList 和 LinkedList 的区别有哪些?

ArrayList查询速度快:因为ArrayList底层是一个数组,查找的时候可以很快的锁定元素的位置,增删却也需要找到对应位置

LinkedList增删速度快,因为底层是一个链表,每次查询需要一个个遍历

\5. 用过 ArrayList 吗?说一下它有什么特点?

优点:

1、根据下标遍历元素效率较高。

2、根据下标访问元素效率较高。

3、在数组的基础上封装了对元素操作的方法。

4、可以自动扩容。

缺点:

1、插入和删除的效率比较低。

2、根据内容查找元素的效率较低。

扩容规则:每次扩容现有容量的50%。

\6. 有数组了为什么还要搞个 ArrayList 呢?

个人理解:因为数组是定长的,ArrayList很好地解决了这个问题, 而且ArrayList还提供了诸如sort sublist的方法

\7. 说说什么是 fail-fast?

这是一种理念,fail-fast就是在做系统设计的时候先考虑异常情况,一旦发生异常,直接停止并上报。

比如做一个除法运算,一旦出现除数是0的情况,直接抛出异常,而不是继续运行可能存在异常的程序

\8. Hashtable 与 HashMap 的区别

1、继承的父类不同

Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

2、线程安全性不同

Hashtable 中的方法是Synchronize的,而HashMap中的方法在缺省情况下是非Synchronize的。在多线程并发的环境下,可以直接使用Hashtable,不需要自己为它的方法实现同步,但使用HashMap时就必须要自己增加同步处理。

3、是否提供contains方法

HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解。Hashtable则保留了contains,containsValue和containsKey三个方法,其中contains和containsValue功能相同。

4、key和value是否允许null值

Hashtable中,key和value都不允许出现null值。但是如果在Hashtable中有类似put(null,null)的操作,编译同样可以通过,因为key和value都是Object类型,但运行时会抛出NullPointerException异常,这是JDK的规范规定的。

HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。

5、两个遍历方式的内部实现上不同

6、hash值不同

7、内部实现使用的数组初始化和扩容方式不同

HashTable中hash数组默认大小是11,增加的方式是 old*2+1。

\9. HashMap 中的 key 我们可以使用任何类作为 key 吗?

HashMap中的key可以是null,基本数据类型或引用数据类型。为了HashMap的正常使用,key一般是不可变对象,至少该对象中用于计算hash值的属性要不可变,方可保证HashMap的正常使用。

\10. HashMap 的长度为什么是 2 的 N 次方呢?

​因为hashmap的扩容机制是导致

\11. HashMap 与 ConcurrentHashMap 的异同

线程不安全与安全:concurrentHashmap引入了分段锁的概念,将map分成了很多hashtable,通过把整个Map分为N个Segment(类似HashTable),可以提供相同的线程安全,但是效率提升N倍,默认提升16倍。

\13. 红黑树有哪几个特征?

*性质**1.* *节点是红色或黑色***

*性质**2.* *根是黑色***

*性质**3.* *所有叶子都是黑色(叶子是**NIL**节点)***

*性质**4.* *如果一个节点是红的,则它的两个儿子都是黑的***

*性质**5.* *从任一节点到其叶子的所有简单路径都包含相同数目的黑色节点。***

\14. 说说你平时是怎么处理 Java 异常的

​try catch

\15. finally 模块执行了吗?是先执行 return 还是先执行 finally 模块?返回什么?

至少有两种情况下finally语句是不会被执行的:

(1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。

(2)在try块中有System.exit(0);这样的语句,System.exit(0);是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。

会先执行try块中的return语句,执行完finaly块之后再返回值

finally块中的return语句会覆盖try块中的return返回

如果finally语句中没有return语句覆盖返回值,那么原来的返回值可能因为finally里的修改而改变也可能不变。

try块里的return语句在异常的情况下不会被执行,这样具体返回哪个看情况。

最后总结:finally块的语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句可能影响也可能不影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。

补充1 为什么java需要序列化

序列化:将对象转化为二进制byte流的过程

反序列化:将二进制byte流转换为对象的过程

一、防止重复存储 二、当你想要在网络上传输对象的时候,需要将对象先转化为byte流序列,当传输过去的时候再反序列化成对象。

补充2 :contains方法

String类型有一个方法:contains(),该方法是判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。

补充3: exception和error

首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。

Exception和Error体现了JAVA这门语言对于异常处理的两种方式。

Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。

Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。所以这种异常不可能抓取到,比如OutOfMemoryError、NoClassDefFoundError等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值