Java常见面试题(4),备战2022冲冲冲

本文详细阐述了JDK与JRE的区别,强调JDK包含JRE并提供开发工具。同时,解释了hashCode()与equals()的关系,指出两者不等价。讨论了Math.round()方法在处理负数时的行为。接着,区分了String对象创建的不同方式及其内存分配。此外,解释了抽象类与抽象方法的使用规则,以及继承抽象类时实现抽象方法的灵活性。最后,总结了Java IO流的分类,并介绍了数组与List之间的转换方法,以及IoC(控制反转)和DI(依赖注入)的概念。

1. JDK 和 JRE 有什么区别?

1.) JDK:是Java Development Kit 的简称,java 的开发工具包,提供了 java 的开发环境和运行环境。

2.) JRE:是Java Runtime Environment 的简称,java的 运行环境,为 java 的运行提供了所需环境。

具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。

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

错误,虽然个对象的 hashCode()相同,但equals()的boolean值不一定 true。

3. java 中的 Math.round(-1.5) 等于多少?

该值等于 -1,切记在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整,负 0.5 是直接舍弃。

4.String str="abc"与 String str=new String("abc")一样吗?

不一样,因为内存的分配方式不一样。String str="abc"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String("abc") 则会被分到堆内存中。

5.抽象方法必须在抽象类中,抽象类中也必须含有抽象方法。

错误,抽象方法可以在抽象类或者接口中,抽象类中可以含有零个至无数个抽象方法。

6.普通类和抽象类有哪些区别?

普通类不能包含抽象方法,抽象类可以包含抽象方法。抽象类不能直接实例化,普通类可以直接实例化。

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

不能,抽象类的存在就是为了让其他类继承从而去实现抽象方法的,如果用 final修饰抽象类来,那么该抽象类就不可以被继承,从而相互之间产生矛盾,因此 final 关键字不能修饰抽象类。

8.抽象方法能使用 final 修饰吗?

不能,抽象方法的存在就是为了让其他实现类去实现的,如果用 final修饰抽象方法,那么该抽象方法就不可以被重写,从而相互之间产生矛盾,因此 final 关键字不能修饰抽象方法。

9.一个类继承了抽象类,就一定要去实现该抽象类中的抽象方法吗?

不一定,可以实现也可以不实现,如果不实现,那么该类也必须要是抽象类。

10.java 中 IO 流分为几种?

按功能可分为:输入流(input)、输出流(output)。

按类型课分为:字节流和字符流。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

11.如何实现数组和 List 之间的转换?

List转换为数组:调用ArrayList的toArray方法。数组转换成为List:调用Arrays的asList方法。

12.IoC是什么意思?DI又是什么意思?

IoC是控制反转,DI是依赖注入。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小陈呀~

您的鼓励是我最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值