原创

Java面试题p1

温馨提示:
本文最后更新于 2026年03月20日,已超过 85 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
  1. JDK 和 JRE 的区别。

jdk Java开发工具包,提供 Java开发和运行环境。

jre 提供Java运行环境

jdk包含jre、javac以及调试和分析工具


==和equals的区别

基本数据类型:比较的值是否相等。

引用数据类型:如String,==比较的是引用是否指向同一个内存地址。

equals被重写了,比较的是引用指向内存中的值是否相等。


String、StringBuffer和StringBuilder区别

String大小固定,不可变

StringBuffer大小可变, 线程安全,同步,效率低,适用于多线程,低并发。

StringBuilder大小可变,线程不安全,不同步,效率高,适用于单线程,高并发。


final在Java中有什么用

final修饰的类叫最终类,该类不能被继承。

final修饰的方法不能被重写。

final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。


Java中Math.round(-1,5)等于多少

等于-1,因为在数轴上取值时,中间值(0.5)向右取整,所有0.5是往上取整,负0.5是直接舍弃

String属于基础的数据类型吗

String不属于基础类型,基础类型有8种:byte、boolean、char、short、int、float、long、double,String属于对象

自动装箱与拆箱

装箱:将基本类型用包装器类型包装起来

拆箱:将包装器类型转化为基本类型

方法覆写和方法重载

方法的重写和重载是Java多态性的不同表现。重写(也叫覆盖,覆写)是父类与子类之间多态性的一种表现,而重载是一个类中多态性的一种表现

重载发生在一个类里面,方法名相同(参数、个数、顺序不同),方法的返回值和修饰符可以不同

重写发生在父类和子类之间,方法名相同,参数列表相同,返回值的范围小于等于父类,抛出的异常范围小于父类,访问修饰符范围大于父类,如果父类方法访问修饰符为private则子类不能重写该方法

字符串反转

使用StringBuilder 或者stringBuffer的reverse()方法

StringBuffer stringBuffer = new StringBuffer();

stringBuffer. append("abcdefg");

System. out. println(stringBuffer. reverse()); // gfedcba

StringBuilder stringBuilder = new StringBuilder();

stringBuilder. append("abcdefg");

System. out. println(stringBuilder. reverse()); // gfedcba 

String类的常用方法

indexOf(); 返回指定字符串的索引

charAt();返回指定索引处的字符

replace();字符串替换

trim();去除字符串两端空白

split();分割字符串,返回一个分割后的字符串数组。

getBytes();返回字符串的byte类型数组

length();返回字符串长度

toLower();将字符串转成小写字母

toUpperCase();将字符串转成大写字符

substring();截取字符串

equals();字符串比较

抽象类必须有抽象方法吗

不必须

普通类和抽象类区别

普通类不能包含抽象方法,抽象类可以包含抽象方法

抽象类不能直接实例化,普通类可以直接实例化

抽象类能使final修饰吗

不能,定义抽象类就是让其他类继承的,如果定义为final,该类就不能被继承。这样会彼此产生矛盾,所以final不能修饰抽象类。

接口和抽象类区别

实现:抽象类的子类使用extends来继承。接口必须使用implements来实现接口

构造函数:抽象类可以有构造函数,接口不能

实现数量:类可以实现很多个接口,但是只能继承1个抽象类

访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法可以是任意访问修饰符

接口        抽象类
实现implement来实现extends来继承
构造函数不能可以有
实现数量实现多个只能继承1个
访问修饰符默认public任意访问修饰符

Java中的IO流分类

按功能:输入流(input)、输出流(output)

按类型分:字节流和字符流

字节流按8位传输字节为单位输入输出数据。

字符流按16位传输字符为单位输入输出数据

BIO、NIO、AIO区别

BIO:同步阻塞IO。就是我们平常使用的传统IO。特点:模式简单、使用方便、并发处理能力低

NIO:同步非阻塞IO。是传统IO的升级,客户端和服务器通过Channel、(通道)通讯,实现了多路复用

AIO:Asynchronous IO 是NIO的升级,也叫 NIO2,实现异步非阻塞,异步IO的操作基于事件和回调机制

Files的常用方法有哪些

Files.exists();检测文件路径是否存在

Files.createFile();创建文件

Filse.createDirectory();创建文件夹

Files.delete();删除一个文件或目录

Files.copy();复制文件

Files.move();移动文件

Files.size();查看文件个数

Files.read();读取文件

Files.write();写入文件

Java容器

Collection

  • List
  • ArrayList
  • LinkedList
  • Vectory
  • Stack
  • Set
  • HashSet
  • LinkedHashSet
  • TreeSet
  • Map
  • HashMap
  • LinkedHashMap
  • TreeMap
  • ConcurrentHahMap
  • HashTable  

Collection和Collections区别

Collection:是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是她的子类

Collections是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类。排序方法:Collections.sort();

List、Map、Set区别

元素有序   允许元素重复
List
SetAbstractSet

HashSet
TreeSet是(用二叉树排序   )
MapAbstractMapkey值必须唯一,value可重复

HashMapkey值必须唯一,value可重复
TreeMap是(用二叉树排序   )key值必须唯一,value可重复

HashMap和HashTable区别

存储:HashMap可以key和value为空,而HashTable不允许

线程安全:Hashtable是线程安全的,HashMap是非线程安全的

推荐使用:单线程环境下使用HahMap。多线程使用ConcurrentHashMap.

正文到此结束