天天看点

Java面试题基础 第一部分Java面试题基础 第一部分

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位字节传输。

    任何文件都可以使用字节流进行传输,非纯文本文件不能用字符流, 不然会导致文件格式的破坏。

  • 按处理方法分:节点流和处理流。
Java面试题基础 第一部分Java面试题基础 第一部分

10、BIO、NIO、AIO的一般区别?

想要看到更加详细的东西可以看这一篇博客

  • BIO:同步阻塞的IO,就是我们平常使用的传统IO,它的特点是简单使用方便,但是处理并发能力比较低。
  • NIO:同步非阻塞IO,是传统IO的升级,客户端和服务器端通过Channel实现通讯,实现了多路服用的功能。
  • AIO:异步非阻塞,基于事件和回调机制。