目录
最近看了篇面试题文章,准备写篇博客复习下
Java面试题大纲
Java基础
1.JDK和JRE的区别
-
JDK:Java Development Kit的简称,即Java开发包工具,提供了Java的开发环境和运行环境。
-
JRE:Java RunTime Environment的简称,Java运行环境,为Java的运行提供了需要的环境
具体说JDK包含了JRE,同时还包含了Javac,还包含了很多Java程序员调试和分析的工具。
2.==和equals的区别是什么?
==:
对于基本类型和应用类型==的作用是不同的,如下所示
-
基本类型:比较值是否相等
-
引用类型:比较的是引用是否相等
代码示例:
String x="string";
String y="string";
String z = new String ("string");
System.out.println(x==y);//true
System.out.println(x==y);//false
System.out.println(x.equals(y));//true
System.out.println(x.equals(z));//true
代码解读:因为x和y指向的是一个引用,所以==也是true,而new String()方法则重新开辟了内存空间,所以==结果为false,而equals比较的一直是值,所以结果为true。
equals:
equals本质是==,只不过String和Integer等重写了equals方法,把它变成了值比较,我们来举个例子,定义实体类Cat,再定义两个对象比较。
Cat cat1 = new Cat("张三");
Cat cat2 = new Cat("张三");
System.out.println(cat1.equals(cat2));//false
String s1 = new String("张三");
String s1 = new String("张三");
System.out.println(s1.equals(s2));//true
我们发现是false,那为什么String的equals比较是true呢
原因就是String重写了Object的equals方法,把引用比较改成值比较。
3.两个对象的Hashcode()相同,equals()一定相同为true吗?
不对,因为在Hashcode()计算的是散列表的位置,而equals()比较的对应位置上存储的值,同一个位置可以存储多个值,所以不一定true
4.final在Java中有什么作用?
- final修饰的类叫最终类,该类不能被继承
- final修饰的方法不能被重写
- final修饰的变量叫常量,常量必须初始化,初始化后值不得修改
5.Java中Math.round(-1.5)等于多少?
等于-1,原理是+0.5然后去掉小数
6.String属于基础类型吗?
基础类型有八种,没有String
7.String str=“i” 和String str = new String("i")一样吗?
String str=“i” 分配的是常量池的内存
String str = new String("i")分配的是堆中的内存
8.如何进行字符反转?
使用StringBuffer或者StringBuilder的reverse();
9.String类常用的方法有哪些?
-
indexOf() 返回指定字符的索引
-
charAt() 返回指定索引上的字符
-
replace() 替换字符串
-
trim() 去除两边空白
-
getBytes() 返回字符串的byte类型数组
-
length() 返回字符串长度
-
toLowerCase() 将字符串转为小写字母
-
toUpperCase()将字符串转为大写字母
-
substring()截取字符串。
-
equals() 字符串比较
10.接口类和抽象类有什么区别?
-
实现:抽象类由extends继承,接口用implements继承
-
构造方法:抽象类可以有构造方法,接口在1.8之前不能
-
实现数量:类可以继承多个接口,但是只能继承一个抽象类
-
访问修饰符:接口中默认方法使用public;抽象类可以任意访问修饰符
11.Files有哪些常用方法
-
Files.exists();文件路径是否存在
-
Files.createFile()创建文件
-
Files.createDirectory()创建文件夹
-
Files.delete()删除一个文件和目录
-
Files.copy()复制文件
-
Files.move()移动文件
-
Files.size()文件数量
-
Files.read()读取文件
-
Files.write()写入文件