Java程序员面试题(刷题)
第一模块
Java 基础
1.JDK 和 JRE 的区别
JDK:Java编译、运行平台
JRE:Java运行平台
(可以说JDK包括了JRE加上Java的源码编译器javac)
2.== 和 equals 的区别是什么
==的作用效果:
- 基本类型:比较的是值是否相等
- 引用类型:比较的是引用是否相等
equals解读:
默认下是引用比较,但是很多类都重写了equals方法,把它变成了值比较,所以一般情况下equals比较的是值是否相等
3.两个对象的 hashCode() 相同,则equals()也一定为true,对吗?
不对,在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等
4.final 在 Java 中有什么作用
如若对类声明final关键字,表示该类不可继承
如若对方法声明final关键字,表示该方法不可被重写
如若对变量声明final关键字,表示该变量为常量,不可被修改
5.Java 中的Math.round(-1.5)等于多少
四舍五入功能方法:
结果为(-1),在数轴上向右方向入(小->大)
6.String属于基础的数据类型吗?
不属于,String是一个类;基础数据类型有:byte,int,short,long,char,boolean,float,double
7.Java 中操作字符都有那些类?他们之间有什么区别吗?
String类、StringBuilder类、StringBuffer类
String类的字符串长度是不可变的,StringBuilder和StringBuffer类是可动态变化字符串长度的。其中StringBuilder是非线程安全的,更适合单线程运行程序解决性能问题,而StringBuffer是支持同步的,是线程安全的,多线程下使用的字符串操作类。
8.String str = "i" 与 String str = new String("i") 一样吗?
不一样,内存的分配方式不一样。String str = “i”的方式,Java虚拟机会将其分配到常量池中,而后者会分配到堆内存中(即创建了String类的新对象)
9.如何将字符串反转
1 | //StringBuilder类的reverse()方法 |
10.String 类的常用方法都有哪些?
- indexOf(“”):返回指定子串首次出现的位置下标
- charAt():返回指定索引处的字符
- replace():
- trim():去除字符串两端的空白
- split():分割字符串(返回数组)
- getBytes():返回字符串的 byte 类型的数组
- length():返回字符串的长度
- toLowerCase():将字符串转化为小写字母
- toUpperCase():将字符串转化为大写字母
- subString():截取字符串
- equals():字符串的比较abstract class Dog {
1
2
3
4
5
6
```
`11.抽象类必须要有抽象方法吗?`
不需要
}public static void sayWang() { System.out.print("wang wang wang ...") }
12.普通类与抽象类有哪些区别
- 普通类不能有抽象方法,而抽象类可以有
- 抽象类不能直接实例化,而普通类可以
13.抽象类能使用 final 修饰吗?
不能,定义抽象类就是让其他类取实现的,而 final 修饰的类为最终类,是不允许被继承的,所以是自相矛盾的。
14.接口和抽象类有什么区别?
实现:实现抽象类是用 extends 继承;实现接口是用 implements 实现接口
构造函数:抽象类可以有;而接口不可
main 方法:抽象类可以有 main 方法,并且我们能运行它;
而接口不能有 main 方法
实现数量:一个类可以实现多个接口;但一个类只能继承一个抽象类
访问修饰符:接口中的方法默认使用 public 的;而抽象类中的方法可以自定义任意访问权限的
15.Java 中 IO 流分为几种?
按功能分:输入流和输出流
按类型分:字节流和字符流
- 字符流按八位传入传输
- 字节流按十六位…..
输入流和输出流
16.BIO、NIO、AIO有什么区别:?
17.Files的常用方法都有哪些?
- Files.exists():检测文件路径是否存下。
- Files.creatFile():检测文件
- Files.creatDirectory():创建文件夹
- Files.delete():