Java基础知识点总结:从JRE到多线程

需积分: 7 0 下载量 164 浏览量 更新于2024-08-26 收藏 514KB PDF 举报
Java面试总结.pdf 本文档总结了Java面试的30个问题,涵盖了Java基础知识和多线程知识。下面是对每个问题的详细解释: **Java基础** 1. JRE和JDK有什么区别? JRE(Java Runtime Environment)是Java运行环境,为Java的运行提供了所需环境。JDK(Java Development Kit)是Java开发工具包,提供了Java的开发环境和运行环境。JDK包含了JRE,同时还包含了编译Java源码的编译器javac,还包含了很多Java程序调试和分析的工具。 2. ==和equals的区别 == 是基本类型和引用类型的使用区别。基本类型比较的是值是否相同,而引用类型比较的是引用是否相同。equals是方法,String类等复写了该方法,使得引用类型比较的时候比较的是值而不是地址。 3. hashcode()是什么? hashcode()是Java对象的哈希码,用于标识对象的唯一性。它可以用来判断两个对象是否相等。 4. final的作用 final是Java中的关键字,用于修饰变量、方法和类。final变量的值不能被改变,final方法不能被重写,final类不能被继承。 5. Java的数据类型? Java的数据类型分为基本类型和引用类型。基本类型包括整型、浮点型、布尔型、字符型等。引用类型包括数组、类、接口等。 6. java中操作字符串都有哪些类?它们之间有什么区别? Java中操作字符串有多种类,包括String、StringBuilder、StringBuffer等。String是不可变的,StringBuilder和StringBuffer是可变的。StringBuilder是线程不安全的,而StringBuffer是线程安全的。 7. 普通类和抽象类有哪些区别? 普通类是可以实例化的类,而抽象类不能被实例化。抽象类是为其他类提供共享方法和变量的。 8. 抽象类能使用final修饰吗? 不能。抽象类不能被final修饰,因为抽象类是为其他类提供共享方法和变量的。 9. 接口和抽象类有什么区别? 接口是抽象类的特殊形式,所有的方法都是抽象的。抽象类可以有抽象方法和非抽象方法,而接口只能有抽象方法。 10. java中IO流分为几种? Java中的IO流分为字节流和字符流。字节流是以字节为单位的,而字符流是以字符为单位的。 11. BIO、NIO、AIO有什么区别? BIO(Blocking I/O)是阻塞式IO,NIO(Non-Blocking I/O)是非阻塞式IO,AIO(Asynchronous I/O)是异步IO。BIO是在读取或写入数据时阻塞的,NIO是在读取或写入数据时不阻塞的,AIO是在读取或写入数据时使用回调机制。 12. Files的常用方法都有哪些? Files类提供了多种方法,包括读取文件、写入文件、删除文件、复制文件等。 13. java容器 Java容器包括Collection、List、Set、Map等。Collection是所有容器的父接口,List是有序的,Set是无序的,Map是键值对的。 14. Collection和Collections有什么区别? Collection是所有容器的父接口,Collections是工具类,提供了多种操作容器的方法。 15. List、Set、Map之间的区别是什么? List是有序的,Set是无序的,Map是键值对的。 16. HashMap和HashTable的区别? HashMap和HashTable都是Map的实现类,但HashMap是非线程安全的,而HashTable是线程安全的。 17. 说一下HashMap的实现原理? HashMap的实现原理是使用哈希表和链表来存储键值对的。 18. 说一下HashSet的实现原理? HashSet的实现原理是使用哈希表来存储元素的。 19. ArrayList和LinkedList的区别是什么? ArrayList是基于数组的实现,LinkedList是基于链表的实现。ArrayList的随机访问速度快,而LinkedList的插入和删除速度快。 20. ArrayList和Vector的区别是什么? ArrayList和Vector都是基于数组的实现,但ArrayList是非线程安全的,而Vector是线程安全的。 21. Array和ArrayList有何区别? Array是Java中的基本类型,ArrayList是基于数组的实现的类。 22. Iterator是什么? Iterator是Java中的迭代器,用于遍历容器中的元素。 **Java多线程** 1. 并行和并发有什么区别? 并行是指多个任务同时执行,而并发是指多个任务交替执行。 2. 线程和进程的区别? 线程是轻量级的进程,进程是重量级的进程。线程可以共享进程的资源,而进程不能共享资源。 3. 守护线程是什么? 守护线程是Java中的特殊线程,用于执行一些辅助任务。 4. 创建线程有哪几种方式? 创建线程有两种方式:继承Thread类和实现Runnable接口。 5. runnable和callable的区别在哪里? Runnable是无返回值的接口,而Callable是有返回值的接口。 6. 线程的状态有哪些? 线程的状态包括新建、运行、等待、阻塞、死亡等。 7. sleep()和wait()有什么区别? sleep()是使线程睡眠一段时间,而wait()是使线程等待其他线程的通知。 8. notify()和notifyAll()有什么区别? notify()是通知一个线程,而notifyAll()是通知所有线程。