Java 最常见的 208 道面试题:第一模块答案 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对 吗? final 在 java 中有什么作用? java 中的 Math.round(-1.5) 等于多少? String 属于基础的数据类型吗? java 中操作字符串都有哪些类?它们之间有什么区别? String str="i"与 String str=new String("i")一样吗? 如何将字符串反转? String 类的常用方法都有那些? 抽象类必须要有抽象方法吗? 普通类和抽象类有哪些区别? 抽象类能使用 final 修饰吗? 接口和抽象类有什么区别? java 中 IO 流分为几种? BIO、 NIO、 AIO 有什么区别? Files 的常用方法都有哪些? 【Java基础】 1. **JDK与JRE的区别** - JDK(Java Development Kit)是Java开发工具包,包括了JRE(Java Runtime Environment),以及用于编译、调试和运行Java程序的工具,如javac编译器。 - JRE仅提供运行Java程序所需的环境,不包含开发工具。 2. **==与equals的区别** - ==:对于基本类型,它比较的是值的相等性;对于引用类型,它比较的是对象引用是否指向同一内存地址。 - equals:默认行为与==相似,但在某些类(如String和Integer)中被重写以进行值的比较。String类的equals方法会逐个字符比较两个字符串的内容是否相同。 3. **hashCode()与equals()关系** - 如果两个对象的hashCode()相同,并不意味着它们的equals()也必须为true。根据约定,如果两个对象的equals()返回true,它们的hashCode()应当相同,但反之并不成立。 4. **final在Java中的作用** - final关键字用于声明不可变的变量、无法重写的成员方法或不能继承的类,确保数据安全和代码规范。 5. **Math.round()函数** - Math.round(-1.5)会返回-1,因为round()方法会四舍五入到最接近的整数。 6. **String是否为基本数据类型** - 不是,String是对象,属于引用类型。Java中的基础数据类型包括int、char等。 7. **处理字符串的类** - 主要有String、StringBuilder和StringBuffer。String是不可变的,StringBuilder和StringBuffer是可变的,后者在多线程环境下更安全。 8. **String str="i"与String str=new String("i")的区别** - 前者在字符串常量池中创建一个"i",后者在堆中创建一个新的"i"对象。 9. **字符串反转** - 可以使用StringBuilder或StringBuffer的reverse()方法,或者使用Java 8的String的chars()流操作。 10. **String类的常用方法** - 如:length()、charAt()、indexOf()、substring()、concat()、replace()、trim()等。 11. **抽象类与普通类的区别** - 抽象类可以包含抽象方法,而普通类不能。抽象类不能实例化,通常作为基类供其他类继承使用。 12. **抽象类能否使用final修饰** - 不能,final类表示不能被继承,而抽象类需要被继承实现其抽象方法,两者冲突。 13. **接口与抽象类的区别** - 接口只包含抽象方法和常量,不支持字段和非静态方法;抽象类可以有抽象和非抽象方法,字段可以是常量或变量。 - 类可以实现多个接口,但只能继承一个抽象类。 14. **Java中的IO流分类** - 字节流(InputStream/OutputStream)和字符流(Reader/Writer)。 - 按流向分为输入流和输出流。 - 按是否支持缓冲分为缓冲流和非缓冲流。 - 按是否具有读写功能分为节点流(直接操作数据源或目的地)和处理流(在已有流的基础上添加功能)。 15. **BIO、NIO、AIO的区别** - BIO(Blocking I/O):同步阻塞I/O模型,使用时会一直阻塞直到数据读写完成。 - NIO(Non-blocking I/O):非阻塞I/O模型,可以处理多个连接,提高了效率。 - AIO(Asynchronous I/O):异步非阻塞I/O模型,当数据准备好时,系统通知用户进程,然后进行处理。 16. **Files的常用方法** - createFile():创建文件。 - delete():删除文件或目录。 - exists():判断文件或目录是否存在。 - isDirectory():判断是否为目录。 - readAllBytes():读取整个文件为字节数组。 - write():写入数据到文件。 - copy():复制文件或目录。 - move():移动文件或目录。 以上就是Java面试中常见的一些问题及其解析,涵盖了Java基础、字符串操作、面向对象特性以及I/O流等方面的知识点。理解并掌握这些内容对于提升Java编程技能和应对面试非常有帮助。
剩余10页未读,继续阅读
- 粉丝: 907
- 资源: 2650
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助