java常见面试题集及答案.doc
Q1:Java内部类和子类之间有什么区别?
答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。
Q2:Java语言中有哪些常见的访问说明符,有什么意义?
答案:Java中的访问说明符是放在类名之前,用于定义访问范围的关键字,常见的访问说明符有以下几类:
Public:公共,能被项目中的任何一个Class、Method、Field访问。
Protected:受保护,能被同类或子类访问,不能从外部访问。
Default:默认,只能被同一个包的Class、Method、Field访问。
Private:私有,只能被本类访问。
Q3:静态方法和静态变量的目的是什么?
答案:静态变量被类的所有实例共用,静态类只能访问类的静态变量,或调用类的静态方法。
Q4:什么是数据封装及其意义?
答案:封装是面向对象编程中用于在单个单元中组合属性和方法。封装可以帮助程序员遵循模块化方法进行软件开发,每个对象都有自己的一组方法和变量,并且可以独立于其他对象来执行其功能。另外,封装也有数据隐藏的目的。
Q5:什么是singletonclass(单例类)?并给出其用法的实际例子。
答案:单例类只能有一个实例,必须自己创建自己的唯一实例,必须给所有其他对象提供这一实例。单例使用场景的最佳实践是由于某些驱动程序限制或由于许可问题的限制只能连接数据库。
Q6:什么是循环?Java中有哪些循环?
答案:循环用于编程中重复执行语句,Java中的循环有三类:
1、for循环
for循环用于执行指定重复次数的语句,当程序员明确知道循环次数可以使用for循环。
2、While循环
当语句满足条件时开始进行重复执行,直到语句不再满足条件退出循环。While循环中在执行语句之前先检查是否满足条件。
3、dowhile循环
Dowhile和while循环基本类似,唯一不同的是dowhile是先执行语句再检查条件,也就是说dowhile循环至少会执行一次语句。
Q7:什么是无限循环?如何声明无限循环?
答案:无限循环是指无条件执行,无限运行。无限循环可以由定义中断语句块来结束。
Q8:continue和break语句有什么区别?
答案:break和continue都是循环中的重要关键词,break语句是结束整个循环过程,continue语句只结束本次循环,而不是终止整个循环的执行。
Q9:Java中的double和float变量有什么区别?
答案:float是单精度浮点数,内存中占用4字节,double是双精度浮点数,内存中占用8字节。
Q10:Java中的Final关键字是什么意思?请举例说明
答案:final是Java中的关键字,有“无法改变”、“终态”的含义,final类不能被继承,没有子类,final类中的方法默认是final的,且不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法。
下面的例子中,const_val被声明且赋值为常量100:
PrivateFinalintconst_val=100
而当一个方法被声明为final之后,它不能被子类覆盖,而且会比其他方法都快。
Q11:举例说明什么是三元运算符?
答案:三元运算符,也称为条件运算符,根据布尔值来决定将哪个值分配给变量,它被表示为…?…:…
在下面的示例中,如果rank为1,status=Done,否则status=Pending
Q12:如何在Java中生成随机数?
答案:使用Math.random()可以生成0.1到1.0范围内的随机数字,然后通过数学方法实现生成符合要求的随机数。
Q13:举例说明什么是default switch case?
答案:在switch语句中,如果没有case条件匹配,那么它会就会执行default后面的语句。
在下面的例子中,当score既不是1也不是2时,就会执行default之后的语句。
Q14:Java中所有派生类的基类是什么?
答案:java.lang.object
Q15:Java中的main()方法可以返回任何数据吗?
答案:java中的main()方法不能返回任何数据,它的返回类型始终是void。
Q16:什么是Java Packages?其意义是什么?
答案:为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
包的作用:
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查和使用。
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包
名加以区别。因此,包可以避免名字冲突。
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Q17:我们可以声明一个抽象类,但是没有任何抽象方法吗?
答案:是的,我们可以声明一个抽象类,且不包含任何抽象方法,但是一旦一个类中含有一个抽象方法,那么该类必须声明为抽象。
Q18:Java中的抽象类和接口有什么区别?
答案:抽象类和接口之间的主要区别在于,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据,同时它所有的方法都必须是抽象的。
java面试题及答案2020抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
一个类可以实现多个接口,但它只能扩展一个抽象类。
Q19:接口对抽象类的性能影响是什么?
答案:与抽象类相比,接口性能较慢。一个类只能扩展一个抽象类,却能实现许多接口,随着接口在类中的实现,也会给开发人员带来额外负担。
Q20:Java中导入包时,其子包是否会被导入?
答案:在Java中导入包时,其子包不会被导入,如果有需要,开发者必须单独导入。开发者需要单独导入它们。