Java面试题基础 第一部分
1、==和equals的区别?
在比较基本数据类型时,==比较的是数据的值
在比较引用数据类型时,==比较的是引用地址是否相同,equals比较的具体的值是否相同。
2、两个对象的hashcode()相同,那么equals一定相同吗?
两个对象的hashcode()相同,但是equals()不一定相同。
String str1 = new String("通话");
String str2 = new String("重地");
System.out.println("str1的 "+str1.hashCode());
System.out.println("str2的 "+str2.hashCode());
System.out.println(str1.equals(str2));
//结果:
str1的 1179395
str2的 1179395
false
//我们需要知道的是,当两个对象的hashcode相等的时候,equals不一定相等
//但是如果equals相等的话,那么两个对象的hashdoe一定相等
3、java中的基本数据类型有哪些?String属于基本数据类型吗?
基本数据类型:byte,short,int,long,char,double,float,boolean
String属于引用数据类型,其不可以被重写。
4、java中string,stringbuffer,stringbuilder的区别和联系?
我们需要明确的是,这三者都是属于操作字符串的类。
String 不可变对象
Stringbuffer 可变 线程安全 性能低 推荐在多线程下使用
Stringbuilder 可变 线程不安全 性能高 推荐在单线程下使用
5、String类常用的方法?
indexOf();
charAt();
replace();
trim();
getBytes();//返回字符串的字符数组。
length();
substring();
equals();
6、Object类常用的方法?
clone();
getClass();
toString();
finalize();
equals();
hashCode();//返回对象的哈希码值,返回为16进制
wait();
notify();
notifyAll();
7、file类常用的方法?
isDirectory();
isFile();
getPath();
getName();
mkdir();
mkdirs();
exists();
delete();
list();
8、抽象类和接口的区别?
抽象类:
- 一个抽象类不能被实例化。
- 抽象类可以有自己的构造方法。
- 一个类只能继承一个类却可以实现多个接口。
- 抽象类中的方法自己可以实现,但是只要还有未被实现的方法,那么它就必须定义为一个抽象类。
- 抽象类中的方法不能用private修饰,可以使用protected和public修饰,default也可以。
接口:
- 我们把接口看作是java中的一个抽象的集合。
- 接口也不能被实例化。
- 接口不能有自己的构造方法。
- 一个类可以实现多个接口,一个接口也可以实现多个接口。
- 接口中的所有方法必须都是没有实现的,也就是抽象的。
- 接口中的方法只能是被public修饰的。
- 接口中的所有变量默认为public static final类型,所有方法默认为public abstract类型。
9、java中io流的分类?
- 按流向来分:输入流和输出流
-
按类型来分:字节流和字符流
字节流按8位字节传输,而字符流为16位字节传输。
任何文件都可以使用字节流进行传输,非纯文本文件不能用字符流, 不然会导致文件格式的破坏。
- 按处理方法分:节点流和处理流。
10、BIO、NIO、AIO的一般区别?
想要看到更加详细的东西可以看这一篇博客
- BIO:同步阻塞的IO,就是我们平常使用的传统IO,它的特点是简单使用方便,但是处理并发能力比较低。
- NIO:同步非阻塞IO,是传统IO的升级,客户端和服务器端通过Channel实现通讯,实现了多路服用的功能。
- AIO:异步非阻塞,基于事件和回调机制。