1.JDK 和 JRE 有什么区别?
- JDK:Java Development Kit的简称,java开发工具包,提供java开发环境和运行环境。
- JRE:Java Runtime Environment的简称,java运行环境,为java的运行提供了所需环境。
JDK包含了JRE,如果要运行java程序,需要安装JRE。
如果要编写java程序,需要安装JDK。
2.== 和 equals 的区别是什么? - ==对基本类型来说是值的比较,对引用类型来比较的是引用;
- equals默认情况下是引用比较,重写为值的比较。
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不对,两个对象的hashCode相同,equals()也不一定为true。
4.final 在 java 中有什么作用? - final修饰的类为最终类,不能被继承;
- final修饰的方法不能被重写;
- final修饰的变量叫常量,常量必须初始化,初始化之后不能被修改。
5.java 中的 Math.round(-1.5) 等于多少?
为-1。
6.String 属于基础的数据类型吗?
不属于,基础数据类型有8种。byte,short,int,long,float,double,char,boolean
7.java 中操作字符串都有哪些类?它们之间有什么区别?
操作字符串的类型有:String、StringBuffer、StringBuilder。 - String声明的是不可变的对象,每次操作都会生成新的对象;
- StringBuffer是线程安全的,StringBuilder是线程非安全的。后者效率更高。
8.String str="i"与 String str=new String(“i”)一样吗?
是不一样的,因为内存的方式不一样。
前者是直接在常量池中创建数据;
后者是在堆中开辟出空间,创建引用来指向它。
9.如何将字符串反转?
使用StringBuilder或者StringBuffer的reverse()方法。
10.String 类的常用方法都有那些?
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。
11.抽象类必须要有抽象方法吗?
不需要,抽象类不一定要有抽象方法。
12.普通类和抽象类有哪些区别? - 普通类不能包含抽象放啊发,抽象类可以包含抽象方法;
- 抽象类不能直接实例化,普通类可以。
13.抽象类能使用 final 修饰吗?
不可以,定义抽象类就是要让其他类来继承的,编译会出错。
14.接口和抽象类有什么区别? - 实现:抽象类的子类用extends来继承;接口要用implements来实现;
- main方法:抽象类可以有main方法,接口不能有;
- 实现数量:类可以实现很多接口,但只能继承一个抽象类;
- 访问修饰符:接口中方法默认是public修饰;抽象类的方法可以使任意访问修饰符。
15.java 中 IO 流分为几种?
按功能来分:输入流input、输出流output
按类型来分:字节流和字符流。
字节流俺8位为字节单位输入输出;字符流按16位字节输入输出。
16.BIO、NIO、AIO 有什么区别? - BIO:Block IO同步阻塞式IO,传统IO,模式简单使用方便,并发处理能力低;
- NIO:New IO同步非阻塞IO,客户端和服务器端通过Channel进行通讯,实现多路复用;
- AIO:Asynchronus IO异步非阻塞IO,异步IO操作基于事件和回调机制。
17.Files的常用方法都有哪些?
Files.exists():检测文件路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除一个文件或目录。
Files.copy():复制文件。
Files.move():移动文件。
Files.size():查看文件个数。
Files.read():读取文件。
Files.write():写入文件。