Q1:什么是Java字节码?采用字节最大的好处是什么?什么是Java虚拟机?
A1:Java虚拟机是机器和编译程序之间的桥梁,虚拟机在任何机器平台上都能为编译程序提供共同的接口。编译程序只需面向虚拟机,生成虚拟机可以理解的代码,然后由解析器来将虚拟机代码转换为特定系统的机器码执行。在Java中这种供虚拟机理解的代码叫做字节码(即扩展名为.class的文件),其不面向任何特定处理器,只面向虚拟机。
整个流程:Java源代码--->编译器--->JVM可执行的Java字节码(即虚拟机指令)--->JVM--->JVM中的解析器--->机器可执行的二进制机器码--->程序运行。
采用字节码的好处:Java语言通过字节码的方式,在一定程度上解决了传统解释型的语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不针对于一种特定的机器,Java程序无须重新编译便可在多种不同的计算机上运行(一次编译到处运行)。
Q2:面向过程和面向对象的区别?
A2:面向过程和面向对象优缺点对比:
优点
缺点
适用场景
面向过程
性能比面向对象高(因为类调用时需要实例化,开销较大,比较耗资源)
没有面向对象易维护、易复用、易扩展
嵌入式开发、单片机
面向对象
易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,系统更灵活、更易于维护
性能比面向过程低
大型软件项目的开发
Q3:重载和重写的区别?构造器(Constructor是否可以被override)
A3:重载:在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时;
重写:在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类;如果父类方法访问修饰符为private则子类中就不是重写