文章面试题整理出自:https://blog.csdn.net/sufu1065/article/details/88051083
1.JDK 和 JRE 有什么区别?
jdk(Java development kit)Java开发工具包,包含jre和Java工具与Java基础类库。针对开发者。
jre(Java runtime Environment)Java运行环境,包含jvm 与Java核心类库,针对Java用户。
jvm Java虚拟机 是用来解释执行字节码的类文件。
2.== 和 equals 的区别是什么?
==:如果是基本数据类型 比较的是值;引用类型比较的是内存地址。
equals:比较的是:内容
string 类型不同 重写了equals方法,
有的值会从常量池中获取。
https://www.cnblogs.com/WangMengyi/p/13974412.html
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不对,有相同的hashcode()但是不一定equals()方法结果为true。
https://www.cnblogs.com/leifei/p/12291023.html
hashCode返回对象的哈希码,equals()判断两个对象是否相等。先去判断hashCode()是否相等,再去判断equals()是否相等。提高对比的准确性。
hashcode相同,两个对象不一定相等。
equals相等那么这两个对象一定相等,且hashcode也一定相等。
先判断hashcode是否相等,如果相等,再判断equals是否相等,如果相等就是同一对象。否则就是不同的对象。
equals比较是绝对可靠的
hashcode比较不是绝对可靠的
4.final 在 java 中有什么作用?
可以修饰类:该类不能继承
修饰方法:不能重写
修饰成员变量:必须初始化值
如果成员变量基本数据类型,表示这个值不可以修改。
如果是成员变量引用数据类型:表示这个引用地址不会发大亨改变。但是引用所指向的对象的内容可以发生改变。
5.java 中的 Math.round(-1.5) 等于多少?
四舍五入 正数 加一
负数减一
public class test {
public static void main(String[] args){
System.out.println(Math.round(1.3)); //1
System.out.println(Math.round(1.4)); //1
System.out.println(Math.round(1.5)); //2
System.out.println(Math.round(1.6)); //2
System.out.println(Math.round(1.7)); //2
System.out.println(Math.round(-1.3)); //-1
System.out.println(Math.round(-1.4)); //-1
System.out.println(Math.round(-1.5)); //-1
System.out.println(Math.round(-1.6)); //-2
System.out.println(Math.round(-1.7)); //-2
}
}
6.String 属于基础的数据类型吗?
不属于,是引用类型。
https://www.cnblogs.com/studywithme/p/13522679.html
7.java 中操作字符串都有哪些类?它们之间有什么区别?
String、StringBuffer、StringBuilder
- String : final修饰,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。
- StringBuffer : 对字符串的操作的方法都加了synchronized,保证线程安全。
- StringBuilder : 不保证线程安全,在方法体内需要进行字符串的修改操作,可以new StringBuilder对象,调用StringBuilder对象的append、replace、delete等方法修改字符串。
- https://blog.csdn.net/meism5/article/details/89328490
8.String str="i"与 String str=new String(“i”)一样吗?
不一样,将值分配到常量池中,后者将值分配到堆内存中。前者创建了有一个对象,后者可能创建了两个对象。
https://blog.csdn.net/zx1293406/article/details/90511458
*9.如何将字符串反转?
class Myreverse {
public static void main(String[] args) {
String s = "1234";
String reverse1 = "";
第一种:利用下标去数据
for (int i = 0; i < s.length(); i++) {
reverse1=s.charAt(i)+reverse1;
System.out.println(s.charAt(i));
System.out.println(reverse1);
}
System.out.println(reverse1);
System.out.println("======================");
反转的方法:
StringBuilder builder = new StringBuilder(s);
System.out.println(builder.reverse().toString());
}
}
10.String 类的常用方法都有那些?
length()、charAt()、indexof()、replace()替换、equals()判断内容是否相等、https://blog.csdn.net/sinat_41920065/article/details/107439921
11.抽象类必须要有抽象方法吗?
抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类。
https://blog.csdn.net/qq_35771266/article/details/97154586
12.普通类和抽象类有哪些区别?
关键字上:普通类没有关键字abstract修饰,抽象类需要加上abstract
实例化上:抽象类不能实例化,必须有有子类继承抽象类,才可以实例化。普通类可以实例化
方法上:抽象类可以没有方法体,普通类必须要有方法体
抽象类不能final修饰
抽象方法不能是private修饰
https://blog.csdn.net/meism5/article/details/89377874
13.抽象类能使用 final 修饰吗?
不能,因为final类修饰的类不能被继承,而抽象类需要子类区继承他,才能实现其抽象方法。
https://blog.csdn.net/qq_35771266/article/details/96862145
14.接口和抽象类有什么区别?
方法上:接口中的方法都是抽象的,抽象类中可以有非抽象方法。
实例化上:接口不能实例化,抽象类可以实例化(前提:该抽象类被继承)
继承性:接口多继承性,类的单继承性
实现方式:接口需要实现,抽象类需要继承
方法体上:接口只能做申明不能做实现,抽象类可以做申明也可以做实现。
变量:接口中的变量是常量,抽象类中的的变量是普通变量。
https://www.cnblogs.com/jmyyyy/p/10960271.html
15.java 中 IO 流分为几种?
按流向:输入流、输出流
处理数据不同:字节流(视频、音频、doc等)、字符流(纯文本)
功能:节点流、处理流
https://blog.csdn.net/weixin_42924812/article/details/105053539
**16.BIO、NIO、AIO 有什么区别?
bio同步阻塞io
nio同步非非阻塞io
aio异步非阻塞io
https://blog.csdn.net/skiof007/article/details/52873421
17.Files的常用方法都有哪些?
Files文件里面的方法都是静态的。
Files. exists():检测文件路径是否存在。
Files. createFile():创建文件。
Files. createDirectory():创建文件夹。
Files. delete():删除一个文件或目录。
Files. copy():复制文件。
Files. move():移动文件。
Files. size():查看文件个数。
Files. read():读取文件。
Files. write():写入文件。
https://blog.csdn.net/py1215/article/details/107606386