Java面试题
1.JVM 、JRE、JDK 之间的关系
JVM:
(1)JAVA 虚拟机
(2)功能:使Java一次编写到处运行。
(3)功能:使Java可移植性好。
JRE:
(1)是Java运行环境。
(2)不能创建程序。
(3)包括JVM的。
JDK:
(1)Java开发工具包。
(2)功能最齐全,包括编译器和各种工具。
(3)作用:用来写代码。
(4)包含JRE的。
总结: 一个公式解决这个问题
JDK=JRE+开发工具
JDK=JVM+核心类库+开发工具
开发工具:
(1)java.exe (运行java程序的)
(2)javac.exe (编译工具,生成.class 文件)
(3)javaw.exe(大多是用来运行GUI程序的)
等等
2、public、protected、private、default 的区别
public:
(1)用来修饰类的
(2)在一个java源文件中只能有一个类被声明为public;只能有一个。
(3)一旦一个类被修饰,那这个java源文件文件名必须和被修饰的类的类名相同。否则编译不过。
(4)用来修饰类中成员(变量和方法)。一旦被修饰任何类中都可以被访问。
protected:
(1)是受到该类所在包所保护的。
(2)被protected所修饰的成员会被位于同⼀package中的所有类访问到。
(3)同时,被protected所修饰的成员也能被该类的所有⼦类继承下来。
private:
(1)private是私有的,即只能在当前类中被访问到,它的作⽤域最⼩。
default:
(1)是默认的,什么都不写,在同一个包内是可见的,不适用任何修饰符。
总结:
1、当前类四种全部能访问。
2、同一包内只有private不能访问。
3、同一个包子孙类也只有private不能访问
4、不同包子孙类只有public能访问,protected要进行说明才是否能访问。
5、其他包只有public能访问。
3、final、finally、finalize的区别
final:
(1)就是不可变的意思,可以修饰变量、⽅法和类。
(2)修饰变量时,这个变量必须初始化,所以也称为常量。
finally:
(1)是异常处理的⼀部分,只能⽤在try/catch中,并且附带⼀个语句块表⽰这段语句⼀定会被执⾏,⽆论是否抛出异常。
finalize:
(1)是java.lang.Object中的⽅法,也就是每⼀个对象都有这个⽅法,⼀个对象的finalize⽅法只会调⽤⼀次,调⽤了不⼀定被回收,因为只有对象被回收的时候才会被回收,就会导致前⾯调⽤,后⾯回收的时候出现问题,不推荐使⽤。
4、static关键字啥作⽤?
(1)这就要提到new对象,只有new对象之后,数据存储空间才会被分配,⽅法才能供外界调⽤。
(2)但是当没有创建对象的时候也想要调⽤⽅法或者就是想为特定分配存储空间的时候,就需要⽤static。
(3)所以有了static,成员变量或者⽅法就可以在没有所属类的时候被访问了。