java面试题答案整理(一)-mile米乐体育

1.jdk 和 jre 有什么区别?

  • jdk是java development kit的缩写,顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。jdk包含了jre,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

  • jre是java runtime environment的缩写,顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的,还有所有的java类库的class文件,都在lib目录下,并且都打包成了jar。

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

一、对象类型不同

  • 1、equals():是超类object中的方法。在object中。==和equals是等价的。

  • 2、==:是操作符。

二、比较的对象不同

  • 1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。

  • 2、==:用于比较引用和比较基本数据类型时具有不同的功能。引用类型比较的是地址。

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

  • 1、如果两个对象相等,则hashcode一定也是相同的

  • 2、两个对象相等,对两个对象分别调用equals方法都返回true

  • 3、两个对象有相同的hashcode值,它们也不一定是相等的

另外,equals方法被覆盖过,则hashcode方法也必须被覆盖为在散列表中,hashcode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

4.final 在 java 中有什么作用?

  • 修饰类:表示该类不能被继承;

  • 修饰方法:表示方法不能被重写;

  • 修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

5.java 中的 math.round(-1.5) 等于多少?

-1,round方法的源代码是 0.5之后向下取整。

6.string 属于基础的数据类型吗?

string不是基本的数据类型,是final修饰的java类,java中的基本类型一共有8个,它们分别为:

  • 字符类型:byte,char

  • 基本整型:short,int,long

  • 浮点型:float,double

  • 布尔类型:boolean

7.java 中操作字符串都有哪些类?它们之间有什么区别?

string、stringbuffer、stringbuilder

  • string : final修饰,string类的方法都是返回new string。即对string对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。

  • stringbuffer : 对字符串的操作的方法都加了synchronized,保证线程安全。

  • stringbuilder : 不保证线程安全,在方法体内需要进行字符串的修改操作,可以new stringbuilder对象,调用stringbuilder对象的append、replace、delete等方法修改字符串。

8.string str="i"与 string str=new string(“i”)一样吗?

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

9.如何将字符串反转?

  • 利用 stringbuffer 或 stringbuilder 的 reverse 成员方法

  • 利用 string 的 tochararray 方法先将字符串转化为 char 类型数组,然后将各个字符进行重新拼接

  • 利用 string 的 charat 方法取出字符串中的各个字符

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

  • 抽象类必须有关键字abstract来修饰。

  • 抽象类可以不含有抽象方法

  • 如果一个类包含抽象方法,则该类必须是抽象类

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

  • 抽象类不能被实例化

  • 抽象类可以有抽象方法,抽象方法只需申明,无需实现

  • 含有抽象方法的类必须申明为抽象类

  • 抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类

  • 抽象方法不能被声明为静态,不能用private,final修饰

12.接口和抽象类有什么区别?

  • 抽象类要被子类继承,接口要被类实现。

  • 接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。

  • 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

  • 接口是设计的结果,抽象类是重构的结果。

  • 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。

13.java 中 io 流分为几种?

14.bio、nio、aio 有什么区别?

  • bio:block io 同步阻塞式 io,就是我们平常使用的传统 io,它的特点是模式简单使用方便,并发处理能力低。

  • nio:non io 同步非阻塞 io,是传统 io 的升级,客户端和服务器端通过 channel(通道)通讯,实现了多路复用。

  • aio:asynchronous io 是 nio 的升级,也叫 nio2,实现了异步非堵塞 io ,异步 io 的操作基于事件和回调机制。

  1. bio:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

  2. nio:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有i/o请求时才启动一个线程进行处理。

  3. aio:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的i/o请求都是由os先完成了再通知服务器应用去启动线程进行处理。

15.files的常用方法都有哪些?

  • files.exists() 检测文件路径是否存在

  • files.createfile()创建文件

  • files.createdirectory()创建文件夹

  • files.delete() 删除文件或者目录

  • files.copy() 复制文件

  • files.move() 移动文件

  • files.size()查看文件个数

  • files.read() 读取文件

  • files.write()写入文件

 



展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图