1.JVM、JRE和JDK的关系
JVM--Java虚拟机,负责加载.class文件并运行(不同的操作系统有不同的虚拟机)
JRE--Java运行环境(包含JVM+运行java程序所必须的环境)
JDK--Java开发工具包(JRE+开发工具)
实际上我们在安装JDK时,它会包含一个Jre,同时还包含了编译Java源码和运行Java 类文件的一个开发、调试和分析的工具。简单点说,假如你需要运行Java程序,只需要安装Jre就可以了,如何你需要编写,调试Java程序,需要安装JDK。
2.什么是跨平台性?原理是什么?
跨平台性就是通过java语言编写的应用程序在不同的系统平台上都可以运行。
原理:我们所编写的java程序是.java源文件,这些文件计算机无法直接执行,需要编译为.class后缀的字节码文件,交给虚拟机运行,不同的操作系统上安装相对于的JVM,这样就实现了Java程序的跨平台性,也成为Java具有良好的可移植性。
3.什么是字节码?采用字节码的最大好处是什么?
字节码:Java源代码经过编译后产生的文件,他不面向任何特定的处理器,只面向虚拟机。
采用字节码的好处:通过字节码的方式,一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且字节码不专对一种特定机器,因此,Java程序无需重新编译即可在多种不同的操作系统上运行。
4.什么是Java程序的主类?应用程序和小程序的主类有何不同?
一个程序可以有很多个类,但只能有一个类是主类。在Java应用程序中,这个主类是指包含main()方法的类。而在Java小程序中,这个主类是一个继承自系统类JApplet或Applet的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。
5.Java和C++的区别?
都是面向对象的语言,都支持封装继承多态;
C++支持多继承,Java只支持单继承,但是接口可以多继承;
Java语言不提供指针访问内存,程序内存更安全;
Java有自动内存管理机制,无需手动释放内存。
6.字符型常量与字符串常量的区别?
形式上:字符型是单引号引起的字符,字符串是双引号引起的若干个字符;
含义上:字符常量相当于一个整型值,可以参与表达式运算,字符串常量表示一个地址值;
占内存大小:字符常量只占两个字节,字符串占若干个字节。
7.构造器是否可以被重写?
子类无法继承父类的私有方法和构造方法,所以构造器无法被重写,但是可以被重载。
8.重载和重写的区别?
重载:发生在同一个类中,方法名相同,参数类型不同,个数不同,顺序不同,返回值和访问修饰符可以不同;
重写:发生在子类中,方法名相同,参数列表必须相同,返回值类型小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类,如果父类被private修饰,那么该方法不可被重写。