1、==和equals的区别
一、比较数据类型的不同
==比较的是基本数据类型和引用数据类型
equals比较的是引用数据类型
二、==比较基本数据类型时比较的是值是否相同,比较引用数据类型时比较的是对象地址
equals比较引用数据类型在object中比较的是对象地址,重写后比较的是比较内容
2、如果两个对象的hashcode一样,他们用equals比较是不是true
不一定,在object中两者都是比较地址,但是两者不是一回事,重写后的hashcode方法可以让不同的对象有相同的hashcode值,但是他们的equals比较值不一定相同
3、final关键字的作用
修饰类时 :表示该类不能被继承
修饰方法时:表示该方法不能被重写
修饰常量时:表示该变量是常量,必须初始化并且不可以被修改
4、String是基本数据类型吗
不是,string是引用数据类型
基本数据类型有:byte、short、char、int、float、double、long、boolean
5、字符串操作类有哪些,他们有什么区别
String、StringBuilder、StringBuffer
String是定长字符串,他对字符串操作每次都会指向新对象,所以会产生很多内存碎片,在频繁对字符串操作时不建议使用
StringBuffer和StringBuilder是变长字符串,区别是StringBuffer是线程安全的,StringBuilder是线程不安全的, 因为Builder不需要维护线程安全,所以性能优于Buffer
6、String s="abc"和String s=new String("abc")一样吗
不一样,第一个是直接在字符串常量池中创建对象abc,第二个先在堆内存中先创建一个对象,然后去常量池中找abc找到就复用,没找到就创建一个
7、String有哪些常用的方法
indexof:返回指定字符的索引
length:返回字符串的长度
equals:比较字符串
replace:字符串替换
trim:去除字符串前后的空格
split:分割字符串,返回一个字符串数组
toLowerCase:将字符转换成小写
toUpperCase:将字符转换成大写
subString:截取字符串
reverse:对字符串进行反转
8、抽象类必须有抽象方法吗
不一定,抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类。
抽象类一般是用于模板设计,具体的代码定义骨架,可变的方法定义抽象方法,交由子类实现
9、抽象类和一般类的区别
一般类不能有抽象方法,一般类可以直接实例化
抽象类可以有抽象方法,抽象类不能直接实例化
10、抽象类能用final修饰吗
不能,用final修饰的类不能被继承,而抽象类的作用是定义模板,就是为了被继承,用final修饰了抽象类就没有意义了
11、抽象类和接口的区别
抽象类继承使用extends,接口实现使用implements
抽闲类可以定义构造函数,接口不可以
抽象类中可以有main方法,接口不能有
类可以多实现但是只能单继承
接口默认public修饰,抽象类方法可以是随意修饰
12、Java中IO流分为几种
按功能分为输入流和输出流
按类型分为字符流和字节流
13、AIO、BIO、NIO的区别
BIO是平时使用的传统的IO,同步阻塞式IO,特点是简单方便,但是并发处理能力低
NIO是同步非阻塞式IO,客户端和服务端通过通道通信,实现了多路复用,一个线程管理的默认通道数量是1024
AIO是异步非阻塞式IO,他是基于事件回调机制
14、File的常用方法有哪些
exists检测路径是否存在
createFile创建文件
createDirectory创建文件夹
copy复制 文件夹
size查看文件个数
read读取文件
write写入文件