关于Java基础的面试题
1、什么是Java虚拟机?为什么Java被称为平台无关的编程语言?
Java虚拟机是可以执行字节码的虚拟机进程,Java源代码被编译成能被Java虚拟机执行的字节码文件。
Java虚拟机是Java实现跨平台,不需要程序员为每一个平台单独重写或重新编译。
准确说是Java源文件经过Javac编译成二进制.class字节码的跨平台性,各平台有不同的jvm,而jvm将相同的字节码的翻译。
我个人理解为jvm就好像一个翻译,而不同的系统都有不同的jvm,相当于jvm作为各自平台的的翻译,翻译相同的Java源文件被自己平台识别。
2、JDK和JRE的区别
其实用英文全拼不难解释
JRE(Java running environment)Java运行时环境,包括Java虚拟机,Java核心类序和支持文件,他不包括开发工具。
JDK(Java development kit) Java开发工具包,是完整的开发工具包包含了JRE,编译器和其他工具。
如 Java Doc,Java调试器,可以让开发者开发编译执行Java应用程序。
图片辅助理解
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191218211031791.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpYW5nX19YaW9uZw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191218211044253.BMP?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpYW5nX19YaW9uZw==,size_16,color_FFFFFF,t_70)
3、static关键字是是什么意思?Java中可以覆盖(override)一个private或者static的方法吗?
static关键字意思是静态修饰符
Java中不可以覆盖static修饰或者private修饰的方法
static修饰静态,不可以覆盖
private修饰权限仅为本类中使用,如果其他类继承本类不可以 继承私有化成员,当然不可被覆盖
4、是否可以在static环境中访问非static变量?
不可以 ,以为静态成员属于类,随类的加载而加载到静态方法区内存,当类加载时不一定有实例创建,没有实例不可以访问非静态成员。类的加载优先于实例的创建,因此静态环境中不可以访问非静态变量
5、Java中方法重写和方法重载的区别
方法重载
方法重载发生在同一个类里两个或者多个方法的方法名相同但是参数不同的情况
方法重写
方法重写是说子类重新定义父类的方法,方法重写必须用相同的方法名,参数列表和返回类型
方法重写的前提是必须有继承