Java基础面试题——查缺补漏

试题目录

1.JDK和JRE有什么区别?

2.  ==  和 equals 的区别是什么?

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

4.final 在Java中的作用是什么?

5.Java 的 Math.round(-1.5) 等于多少?

6.String属于基本的数据类型吗?

7.Java中操作字符串的有哪一些?他们之间有什么区别?

8.String str = " i " 与 String str = new String(" i ") 一样吗?

 9.如何将字符串反转?

10.String类的常用方法有哪些?

11.抽象类必须要有抽象方法吗?

12.普通类和抽象类的区别?

13.抽象类能使用final修饰吗?

14.接口和抽象类的区别?

15.Java中的IO流分为那几种?

 16.BIO NIO AIO 有什么区别?

17.Files的常用方法?


1.JDK和JRE有什么区别?

JDK:Java开发工具包,提供了Java的开发环境和运行环境。

JRE:Java运行环境,为Java的运行提供所需的环境。

2.  ==  和 equals 的区别是什么?

== 解析:

对于基本类型:比较的是值是否相同。

对于引用类型:比较的是引用(地址)是否相同

equals 解析:

本质上是 == 只不过String和Integer等重写了equals方法,把他变成了值比较。

总结:

一般情况下,equals方法一般比较的是值,所以一般都是要重写的!

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

答案:不对,不一定!!!

因为在散列表中,hashCode() 相等即相当于两个键值对的哈希值相同,然而哈希值相同不代表键值对相等。

4.final 在Java中的作用是什么?

(1)final修饰的类叫做最终类,不能被继承

(2)final修饰的方法不能被重写

(3)final修饰的变量叫做常量,常量必须初始化,初始化之后不能被修改

5.Java 的 Math.round(-1.5) 等于多少?

等于-1

因为在数轴上取值时,中间值(0.5)向右取整,所以正0.5是往上取整,负0.5是直接舍弃

6.String属于基本的数据类型吗?

不属于!

基本数据类型有:byte short int long float double boolean char

7.Java中操作字符串的有哪一些?他们之间有什么区别?

操作字符串的类有:String  StringBuffer  StringBuilder

(1)String:final修饰的、不可变的对象。每次操作都会生成新的String对象,频繁使用会耗费内存。

(2)StringBuffer:线程安全的。多线程环境下推荐使用。

(3)StringBuilder:非线程安全的。单线程环境下推荐使用。

注意:需要频繁操作字符串不建议使用String。

8.String str = " i " 与 String str = new String(" i ") 一样吗?

不一样!

String str = " i " Java虚拟机会将其分配到常量池中

String str = new String(" i ") Java虚拟机会将其分配到堆内存中

 9.如何将字符串反转?

使用 StringBuffer 或者 StringBuilder 的 reverse() 方法!!!

10.String类的常用方法有哪些?

indexOf():返回指定字符串的索引

charAt():返回指定索引处的字符

replace():字符串替换

trim():去除字符串两端空白

split():分割字符串,返回一个分割后的字符串数组

getBytes():返回字符串的byte类型的数组

length():返回字符串长度

toLowerCase():将字符串转换为小写字母

toUpperCase():将字符串转换为大写字母

substring():截取字符串

equals():字符串比较

11.抽象类必须要有抽象方法吗?

不一定!!!

注意:含抽象方法的类一定是抽象类(或接口)

示例代码:

abstract class A{
    public static void a(){
        System.out.println("a");
    }
}

以上代码可以正常运行

12.普通类和抽象类的区别?

(1)普通类不能包含抽象方法,抽象类可以包含抽象方法

(2)抽象类不能实例化,普通类可以实例化

13.抽象类能使用final修饰吗?

不能,定义抽象类就是给其他类继承的,如果定义为final,该类就无法被继承,产生矛盾。

14.接口和抽象类的区别?

(1)实现:抽象类的子类使用extends;接口使用implements来实现

(2)构造方法:抽象类可以有构造方法;接口不能有

(3)main方法:抽象类中可以有,也能运行;接口不能有

(4)实现数量:类单一继承;接口多继承

(5)访问修饰符:抽象类中的方法是任意访问修饰符;接口方法默认为public修饰

15.Java中的IO流分为那几种?

按流的方向:输入流、输出流

按流的类型:字节流、字符流

注意:类名以“Stream”结尾的是字节流;类名以“Reader/Writer”结尾的是字符流。

字节流跟字符流的区别:字节流以八位传输为单位输入输出数据。字符流以十六位传输为单位输入输出数据。

 16.BIO NIO AIO 有什么区别?

同步阻塞BIO:即传统的IO,模式简单使用方便,并发处理能力低。

同步非阻塞NIO:即BIO升级,客户端和服务端通过Channel(通道)通讯,实现多路复用。

异步非阻塞AIO:即NIO升级,也叫NIO2,异步IO的操作基于事件和回调机制。

17.Files的常用方法?

Files.exists():判断文件是否存在

Files.createFile():创建文件

Files.createDirectory():创建文件夹

Files.delete():删除一个文件或目录

Files.copy():复制文件

Files.move():移动文件

Files.size():查看你文件个数

Files.read():读取文件

Files.write():写入文件

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值