JavaSE面试题(每日背诵版-day01)

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写入文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值