1、jdk和jre的区别
jdk:java development kit的简称,即java开发工具包,提供了java的开发环境和运行环境
jre:java runtime environment的简称,即java运行环境,为java的运行提供了所需环境
具体来说,jdk包含了jre,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具。
简单来说,如果你需要运行java程序,只需要安装jre即可,如果你需要编写java程序,需要安装jdk
2、==和equals的区别
基本类型:比较的是值是否相同
引用类型:比较的是引用是否相同
equals比较的是值是否相等,而==用来判断2个对象的地址是否相同,即是否指相同的一个对象。
3、普通类和抽象类有哪些区别?
普通类不能包含抽象方法,抽象类可以包含抽象方法
抽象类不能直接实例化,普通类可以直接实例化
4、接口和抽象类的区别
1)、实现:接口必须使用implements来实现接口
抽象类的子类使用extends来继承
2)、访问修饰符:接口中的方法默认使用public修饰
抽象类中的方法可以是任意访问修饰符
3)、实现数量:类可以实现多个接口,但是只能继承一个抽象类
4)、构造函数:抽象类可以有构造函数,接口不能有
5)、main方法:抽象类可以有main方法,并且我们能运行它
接口不能有main方法
5、string类常用的方法有哪些?
1)、indexOf():返回指定字符的索引
2)、charAt():返回指定索引处的字符
3)、replace():字符串替换
4)、trim():去除字符串两端空白
5)、split():分割字符串,返回一个分割后的字符串数组
6)、getBytes():返回字符串的byte类型数组
7)、length():返回字符串的byte类型数组
8)、toLowerCase():将字符串转换成小写字母
9)、toUpperCase():将字符串转换成大写字符
10)、substring():截取字符串
11)、equals():字符串比较
6、Files的常用方法有哪些?
1)、Files.exists():检测文件路径是否存在
2)、Files.createFile():创建文件
3)、Files.createDirectory():创建文件夹
4)、Files.delete():删除一个文件或目录
5)、Files.copy():复制文件
6)、Files.move():移动文件
7)、Files.size():查看文件个数
8)、Files.read():读取文件
9)、Files.write():写入文件
7、如何将字符串反转?
使用StringBuilder或者StringBuffer的reverse()方法
8、String str="i"和String str=new String("i")是一样的吗?
不一样,因为内存的分配方式不一样,前者,java虚拟机会将其分配到常量池中,后者则会被分配到堆内存中。
9、String属于基本数据类型吗?
String不属于基本数据类型,基本数据类型有8种:byte、boolean、char、short、int、float、long、double
而String属于引用数据类型,属于对象
10、String、StringBuffer、StringBuilder三者的区别?
他们都是操作字符串的常用类
1)、String声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象。
而StringBuffer、StringBuilder可以在原有对象的基础上进行操作,所有在经常改变字符串内容的情况下最好不使用String
2)、StringBuffer是线程安全的,而StringBuilder是非线程安全的。但是StringBuilder的性能却比StringBuffer高,所以在单线程环境下推荐使用StringBuilder,多线程环境下使用StringBuffer.
11、final在java中有什么作用
1)、修饰的类为最终类,不能被继承
2)、修饰的方法不能被重写
3)、修饰的变量为常量,常量必须初始化,初始化之后值就不能被修改
12、抽象类中必须有抽象方法吗?
不需要,抽象类不一定非要有抽象方法
13、抽象类能用final修饰吗?
不能,定义抽象类就是让其他类继承的,如果定义为final该类就不能被继承,这样很容易产生矛盾,所以final不能修饰抽象类。
14、java中IO流分为几种?
1)、按照功能分为:输入流和输出流
2)、按照类型分为:字节流和字符流
字节流和字符流的区别在于:字节流是按照8为传输以字节为单位输入输出数据
字符流是按16位传输以字符为单位输入输出数据
15、BIO、NIO、AIO的区别
BIO:block IO同步阻塞,就是我们平常使用的传统IO,它的特点是模式简单使用方便,并发处理能力低
NIO:new IO同步非阻塞IO,是传统IO的升级,客户端和服务器端通过channel通道通讯,实现多路复用
AIO:asynchronous IO,是NIO的升级,也叫NIO2,实现了异步非阻塞IO,异步IO的操作基于事件和回调函数。