java经典面试题及答案,java面试题选择题
一、int和Integer的区别
(相关教程推荐:java面试题)
1.Integer是int的包装类,int是java的基本数据类型。
2.整数变量在使用前必须被实例化,但是int变量不需要。
3.Integer实际上是对对象的引用。当一个整数是新的时,它实际上会生成一个指针指向这个对象;而int是直接存储的数据值。
4.Integer的默认值为null,int的默认值为0。
二、什么是for each循环,它可以循环那些数据类型?
for循环的增强版写得更简洁,更不容易出错(因为不用担心数组越界)。底层也是通过迭代器获取的,但是迭代器的获取是由jvm完成的,所以我们不需要获取迭代器。因此,在使用foreach循环变量元素的过程中,不允许使用set对象修改集合中的元素个数。
写作:
for(String it : set){
system . out . println( collection: it 的元素);
}缺点:
当操作数组索引或添加或删除集合时,可能会报告错误。
(推荐学习:java入门)
三、重载与重写有什么区别?
1.方法重载
它是类以统一的方式处理不同类型数据的一种方式。具有相同名称的多个函数同时存在,具有不同数量/类型的参数。重载是类中多态性的一种表现。
Java的方法重载意味着可以在一个类中创建多个方法,这些方法具有相同的名称,但是具有不同的参数和定义。
当一个方法被调用时,通过传递给它们的不同参数的数量和类型来决定使用哪个方法,这被称为多态性。
重载时,方法名应该相同,但参数类型和个数不同,返回值类型可以相同也可以不同。返回值类型不能作为重载函数的区分标准。
2.方法重写
参数列表必须与被重写的方法完全相同,否则不能被重写,只能被重载。
的返回类型必须始终与被重写方法的返回类型相同,否则不能称为重写,只能称为重载。
访问修饰符的限制必须大于被重写方法的限制(publicprotecteddefaultprivate)
重写方法不得引发新的检查异常或比被重写方法声明的检查异常更广泛的检查异常。例如,父类的方法声明了一个检查异常IOException。在重写该方法时,不能抛出异常,只能抛出IOException的子类异常,并且可以抛出非检查异常。
注意:构造器不能被继承,因此不能被重写,但可以被重载。
四、接口与抽象类的区别?
1.抽象类和接口都不能直接实例化。如果要实例化,抽象类变量必须指向实现所有抽象方法的子类,接口变量必须指向实现所有接口方法的类对象。
2.抽象类应该由子类继承,接口应该由类实现。
3.接口只能声明为方法,抽象类可以声明或实现为方法。
4.接口中定义的变量只能是公共静态常量,抽象类中的变量是普通变量。
5.抽象类中的所有抽象方法都必须由子类实现。如果子类不能实现父类的所有抽象方法,那么子类只能是抽象类。同样,在实现一个接口的时候,如果不能实现所有的接口方法,那么这个类就只能是抽象的。
6.抽象方法只能声明,不能实现。接口是设计的结果,抽象类是重构的结果。
7.抽象类中不能有抽象方法。
8.如果一个类中有抽象方法,那么这个类只能是抽象的。
9.应该实现抽象方法,所以它们不能是静态的或私有的。
10.接口可以继承接口和多个接口,但是类只能由单个根继承。
不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,那么A如何决定继承哪个?
但是,接口不存在这样的问题。谁通过抽象方法继承所有的接口并不重要,所以接口可以继承多个接口。
(视频教程推荐:java视频教程)
五、final, finally, finalize 的区别
Final:关键字和修饰语final:java。
a)如果一个类被声明为final,这意味着它不能再派生新的子类,也不能作为父类继承。因此,一个类不能同时声明为抽象的和最终的。
b)如果变量或方法被声明为final,则可以保证它们在使用中不会被更改。
(1)声明为final的变量必须在声明时赋予初始值,但在以后的引用中只能读取,不能修改。
(2)声明为final的方法只能使用,不能重载。
最后:Java的异常处理机制。
Finally是Java异常处理模型的最佳补充。最后,结构使得代码总是执行,不管有没有异常。最后,您可以维护对象的内部状态并清理非内存资源。特别是在关闭数据库连接方面,如果程序员把数据库连接的close()方法放到最后,程序出错的概率会大大降低。
Finalize,它是一个方法,属于java.lang.Object类。其定义如下:
受保护的Void finalize()抛出Throwable {}众所周知,finalize()方法是GC(garbagecollector)运行机制的一部分。这里,我们只说finalize()方法的作用。
当GC清理它所属的对象时,finalize()方法被调用。如果在执行过程中抛出了uncaughtexception(未捕获的异常,GC将终止对已更改对象的清理,异常将被忽略;直到下一次GC开始清理这个对象,它的finalize()将被再次调用。这就是java经典面试问题的细节(二)。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。