1.JDK和JRE有什么区别
JDK:简称Java Development kit,Java开发工具包,提供了Java开发环境和运行环境。
JRE:简称Java Runtime Environment,Java运行环境,提供了Java运行时所需要的环境。
JDK中包含了JRE、Javac(编译Java源码的编译器)、还包含了很多调试和分析Java程序的工具。
运行Java程序只需要安装JRE就可以,只有需要编写Java程序的时候才需要安装JDK。
2.==和equals有什么区别
==:基础数据类型比较的是值是否相等,引用数据类型比较的是内存地址是否相同。
equals:默认情况下是引用比较,只有重写了equals方法(String、Integer)则比较的是值是否相等。
3.两个对象的hashCode相同,则equals()也一定为true?
两个对象的hashCode相同,equals不一定为true。
在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等并不一定能得出键值对相等。
示例如下:
public class Demo { public static void main(String[] args) { String str1 = "值1"; String str2 = "值2"; System.out.println(String.format("str1:%d | str2:%d", str1.hashCode(),str2.hashCode())); System.out.println(str1.equals(str2)); } }
4.final在Java中有什么作用
final修饰的类叫最终类,该类不能被继承。
final修饰的方法不能被重写。
final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
5.Java中的Math.round()
Math对象的方法可以在https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math查看。
Math.round():表示四舍五入向上取整。
6.String属于基础数据类吗?
String不属于基础数据类型,基础数据有8种:byte、boolean、char、short、int、float、long、double。String属于对象是引用数据类型。
7.Java操作字符串的有哪些类,他们之间有什么区别?
操作字符串的类有:String、StringBuffer、StringBuilder。
String和StringBuffer、StringBuilder的区别:String声明的是不可变对象,每次操作都会生成新的String对象,然后指针指向新的String对象。而Stringbuffer、StringBuilder可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用String。
StringBuffer和StringBuilder的区别:StringBuffer是线程安全的,而StringBuilder则是线程不安全的,但StringBuilder的性能却高于StringBuffer,所以单线程环境建议使用StringBuilder,多线程环境建议使用StringBuffer。
8.String str="1"与String str=new String("1")一样吗?
不一样,String str="1"的方式,Java虚拟机会将其分配到常量池中,而String str=new String("1")则会被分配到堆内存中。
9.如何将字符串反转?
使用StringBuffer、StringBuilder的reverse()方法进行字符串反转。
10.String类的常用方法有哪些?
String的常用方法:
- indexOf():返回知道字符串的索引。
- charAt():返回知道索引处的字符。
- replace():字符串替换。
- trim():去除字符串两端空白。
- split():分割字符串,返回分割后的字符串数组。
- getBytes():返回字符串的byte数组。
- length():返回字符串长度。
- toLowerCase():将字符串转为小写字母。
- toUpperCase():将字符串转为大写字母。
- substring():截取字符串。
- equals():字符串比较。
11.抽象类必须要有抽象方法吗?
抽象类不一定有抽象方法。
12.普通类和抽象类有哪些区别?
普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类不能实例化,普通类可以实例化。
13.抽象类能用final修饰吗?
不能,抽象类就是让其他类继承的,如果用final修饰则该类不能被继承,这样是彼此矛盾的,所以抽象类不能被final修饰。
14.接口和抽象类有什么区别?
实现:抽象类是extends来继承,接口则是使用implements实现。
构造函数:抽象类可以有构造函数,接口不能有。
实现数量:类可以实现多个接口,但只能继承一个类。
访问修饰符:接口中方法默认用public修饰,抽象类中的方法有使用任意修饰符。
15.Java中IO流分为几种?
按功能分配:输入流、输出流。
按类型分配:字节流、字符流。
字节流和字符流的区别:字节流按8位传输以字节位单位输入输出数据,字符流按16位传输以字符为单位输入输出数据。
16.BIO、NIO、AIO有什么区别?
BIO:Block IO同步阻塞IO,就是我们平常使用的传统IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New IO或Non Blocking IO同步非阻塞IO,是传统IO的升级客户端和服务器通过使用Channel(通道)通宵,实现多路复用。
AIO:Asynchronous IO是NIO的升级,也叫NIO2,实现异步非阻塞IO,异步IO的操作基于事件和回调机制。
17.files的常用方法有哪些?
files的常用方法:
- exists():检测文件路径是否存在。
- createFile():创建文件。
- createDirectory():创建文件夹。
- delete():删除文件。
- copy():复制文件。
- move():移动文件。
- size():文件数量。
- read():读取文件。
- write():写入文件。