java面试题(java基础部分)

1、JDK和JRE的区别?

JDK是java的开发和运行环境, JRE是java的运行环境;
JDK包含了JRE,除此之外还包含了可以编译java源码的编译器javac;
若只是运行java程序,安装JRE就可以,开发java程序需要安装JDK。

2、==和equals的区别

在Object类中,equals方法的本质就是==。

public boolean equals(Object obj) {
        return (this == obj);
    }

基本数据类型,==是值比较;而对于引用类型, ==是引用比较。
equals方法默认是引用比较,但是很多类重写了equals方法,比如String类和Integer类等,所以更多情况下equals是值比较。

3、两个对象的HashCode()相同,则equals也一定为true对吗?

不对 。两个对象的HashCode()相同,则equals不一定为true。
hashcode相同只是表明哈希值一样,但是不代表键值对相等。
equals相等,那么它们的hashCode一定相等。

4、final在Java中的作用

final修饰一个类的时候,此类不可以被继承;
final修饰的方法不可以被重写;
final修饰的变量为常量,必须有初始值,并且不可以被修改;

5、final、finally、finalize的区别

final用于修饰类、方法和变量;分别表示类不可继承,方法不可覆盖,变量不可被修改;
finally是处理异常语句块中的一部分,表示总是执行;
finalize是Object类中的一个方法,在垃圾回收器执行的时候,就会调用被回收对象的此方法;

6、Math中的取整方法

ceil、floor、round
ceil是向上取整;
floor是向下取整;
round是在原有的基础上+0.5向下取整

7、String输入基本数据类型吗

不属于。java的八大基本数据类型分别是:
byte、short、int 、long、double、float、boolean、char
而String属于对象类型。

8、Java中操作字符串都有哪些类,区别是什么

操作字符串的类有三个:String、StringBuffer、StringBuilder
String是不可变字符串,每次操作都会生成新的String对象。
StringBuilder和StringBuffer是可变字符串,不过StringBuffer是线程安全的,StringBuilder不是线程安全的;在StringBuffer类中的许多方法都使用了synchronized关键词修饰。
但是StringBuilder的性能要高于StringBuffer。
单线程环境下推荐使用StringBuilder;多线程环境下推荐使用StringBuffer。

9、String str = “i” 和String str = new String(“i”)中的两个str一样吗

不一样。
String str = "i"只是声明了一个变量,值为i,会被分配到常量池中
但是String str = new String(“i”)是创建了一个对象,这个对象引用的内存地址中的值是i,会被分配到堆内存中

10、如何将字符串反转

使用StringBuffer或者StringBuilder类中reverse()方法
在这里插入图片描述

11、String类中的常用方法都有哪些

length(): 返回字符串的长度
substring():截取其字符串
trim():取出字符串两端的空白
replace():替换字符串
indexOf():返回指定字符的索引
charAt():返回指定索引的字符
split():分割字符串,返回的是数组
equals():字符串比较
getBytes():返回字符串的byte数组
toLowerCase():字符串转小写
toUpperCase():字符串转大写

12、抽象类中必须有抽象方法吗

不需要。抽象类中可以有抽象方法,不需要必须有抽象方法。

13、抽象类与普通类的区别

抽象类中可以有抽象方法,普通类中不可以有抽象方法;
抽象类不可以被实例化对象,普通类可以实例化对象;

14、抽象类和接口的区别

  1. 抽象类中可以有一般方法、构造方法和抽象方法;接口只可以有抽象方法;
  2. 接口使用interface修饰,可以有多个类实现;抽象类使用abstract修饰,单继承
  3. 抽象类中可以有普通成员变量;接口中不可以有普通成员变量;
  4. 抽象类中的方法可以是public、protected修饰;接口中的方法只能是public修饰,并且默认是public abstract
  5. 抽象类中可以有静态方法;接口中不可以有静态方法
    在这里插入图片描述

15、抽象类可以用final修饰吗

不可以。抽象类本身就是为了被继承,如果用final修饰的话,就表明不可以被继承。互相矛盾

16、java中的IO流分为几种

按功能来分:输入流input、输出流output
按类型来分:字节流、字符流
字节流是操作8个字节;字符流操作16个字符

17、BIO、NIO、AIO的区别

BIO是同步阻塞式IO,就是我们常用的传统IO,特点是模式简单,使用方便,并发处理能力低;
NIO是同步非阻塞式IO,是传统IO的升级版,客户端和服务端通过Channel(通道)通讯,实现了多路复用;
AIO是异步非阻塞式IO,是NIO的升级版,异步IO的操作基于事件和回调机制;

18、Files的常用方法

Files.exists() 查看文件路径是否存在
Files.copy() 复制文件
Files.delete() 删除文件
Files.read() 读取文件
Files.write() 写入文件
Files.createDirectory() 创建文件夹
Files.createFile() 创建文件
Files.move() 移动文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值