1、jdk,jre,jvm之间的关系
jdk是由jre和工具包组成的,jre是由jvm虚拟机和类库组成的。jvm是指java虚拟机,他是java跨平台的实现原理
2、什么是跨平台,原理是什么
java的程序运行在java虚拟机,每个系统部署自己对应版本的jre就可以运行java程序,所以java可以跨平台运行,因为他运行在java虚拟机。
3、面对对象四大特性
继承—-代码重用性,继承了父类非私有的属性,并且可以重写方法,实现功能
多态—-指具体运行方法在编译时并不确定,要调用时才确定。例如接口,继承
抽象——-指一类对象的共同属性或者行为,就可以抽象
封装——-将对象封装,对象的属性私有化,并提供给对外的访问方法。
4、四大访问修饰符
private—当前类能访问
defualt—当前类以及同包的能访问
protected—当前类以及同包及子类
public—都可以
5、final的作用
修饰变量,不能修改
修饰方法,不能重写
修饰类,不能继承
6、final,finally,finalize区别
final如上
finally是trycatch的之后不管是否报错都会执行的语句
finalized是垃圾回收的方法
7、方法重写,重载
方法重写通常发生在父子,子类重写父类的方案,方法名相同,参数列表相同,实现逻辑不同
方法重载通常发生在一个类里面,指方法名相同,但是参数列表不同,比如类构造方法
8、break,return,continue区别
break结束循环体。
continue结束当前循环,继续下一次循环
return结束当前方法。
9、抽象类和接口比较
抽象类和接口都不能实例化,只能继承或者实现,但是单继承,多实现,并且抽象类方法可以拥有自己的变量,接口一般不定义,定义的话默认也是static和final修饰。接口中的方法默认是public的,抽象类随意。
10、==和equals
==基础类型的数据比较是值,引用数据类型比较的是内存地址
equals比较的是对象的值
11、hashcode和equals
hashcode 是获取对象的哈希值,返回一个int类型的数值,两个对象相等,那么他们的hashcode相等,但是哈希值相等并不一定,值相等,equals用作比较值,所以一起判断可以判断对象是否相等。
12、io流区分
输入流,输出流
字节流,字符流
节点流,处理流
13、BIO、NIO、AIO区别
BIO,同步阻塞IO
NIO,同步非阻塞IO,主要是通过信道传输
AIO,异步非阻塞IO
14、反射
通过字节码对象,获取对象的属性,方法。
获取方式
对象.getclass
类.class
class.forname(路径)
15、string、StringBuffer、stringbuilder
string是不可变字符串,他的底层是一个char数组,使用final修饰,所以他不能更改,每次创建都是一个新的对象
StringBuffer是线程安全的可变字符串,他底层没有被final修饰
stringbuilder是线程不安全的可变字符串。
16、class文件的作用
class文件是java虚拟机编译生成的文件,保证了java跨平台运行,并且提高了java执行程序的运行效率。
17、java和c++的区别
java单继承,c++多继承
java没有指针直接操作内存,c++有。所以java更安全
java底层有GC,自动释放内存。
18、java基础数据类型
整数型—byte、short、int、long
字符型—char
浮点型—double、float
布尔—boolean
19、swich参数类型
java1.8支持字符串,枚举,基础数值类型
20、自动拆箱与自动装箱
将基本数据类型包装成对应的引用数据类型,拆箱反之。
integer应用数据类型的值在-128到127之间的值比较是相等的。因为他们都是引用常量池中的对象。