干货来咯,近段时间精心整理的一套Java基础面试题,希望能够帮助有需要的朋友,接下来会持续更新!!活不多说,进入正题
1.Java是什么?相比其他语言有什么优点?
Java简单易用,比C语言更容易学,且编程更加简洁,此外Java是基于面向对象的编程语言,更加符合人们的思维模式;Java同时是一门成熟的语言,安全性更高,拥有优秀的跨平台能力,是其他语言所不能比的。
2.什么是跨平台性?
由于各种操作系统所支持的指令集不是完全一致,所以在操作系统之上加个虚拟机可以来提供统一接口,屏蔽系统之间的差异,比如拿Java来说,使用Java虚拟机(JVM)来实现跨平台。
3.跨平台的原理是怎样的?
Java程序是通过java虚拟机(JVM)在系统平台上运行的,只要该系统可以安装相应的JVM,该系统就可以运行java程序(一次编写,到处运行,即为跨平台运行)
我们编写代码时所产生的文件叫做java源文件(.java文件),它通过编译器编译成为字节码文件(.class文件),字节码文件则通过JVM来解释执行成特定机器上的机器码(二进制码),就可以在特定的机器上运行了
4.Java的八大基本数据类型:
byte、short、int、long、float、double、char、boolean
5.面向对象的基本特征有哪些?
面向对象的编程语言有封装、继承 、多态、抽象等4个主要的特征
封装: 把描述一个对象的属性和行为的代码封装在一个模块中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法可以直接访问同一个对象中的属性。
继承:子类继承父类的特征和行为。子类可以有父类的方法,属性(非private)。子类也可以对父类进行扩展,也可以重写父类的方法。缺点就是提高代码之间的耦合性。
多态: 多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定(比如:向上转型,只有运行才能确定其对象属性)。方法覆盖和重载体现了多态性。
抽象: 把现实生活中的对象抽象为类。分为过程抽象和数据抽象。
6.八大基本数据类型对应的包装类是什么?为什么要有包装类?
除Integer、char分别为Integer、Character外,其余6个均为将首字母大写即可。
为什么还要有包装类呢?
是因为要让基本类型也具有对象的特征,比如我们在使用集合类型Collection时就一定要使用包装类型而不是基本类型(因为容器都是用来装Object的,也就是对象,这时候就必须用到包装类了)。
7.==和equals的区别是什么?
==比
较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致。
equals是判断两个变量或实例所指向的内存空间的值是不是相同。在实际操作中,一般都会重写equals方法,即比较的是内容值。
8.GC是什么? 为什么要有GC?
GC是垃圾回收器
当一个对象不能再被后续程序所引用到时,这个对象所占用的内存空间就没有存在的意义了,java虚拟机会不定时的去检测内存中这样的对象,然后回收这块内存空间,进而释放内存,避免出现内存泄露和内存溢出等问题,同时也使开发者专注自己的业务开发,不用担心内存管理的问题。这就是垃圾回收。
9.goto在Java中指什么?
goto是Java中的保留字,但在目前版本的Java中并不能够使用。
10.Error和Exception有什么区别?
error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题,比如内存溢出,程序无法对此类问题进行处理。
exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,就不会发生的情况。常见的异常有:
NullPointerException:当操作一个空引用时会出现此错误。
NumberFormatException:数据格式转换出现问题时出现此异常。
ClassCastException:强制类型转换类型不匹配时出现此异常。
ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。
持续更新中... 敬请关注!!!