首页 > 编程语言 >Java面试题Day02

Java面试题Day02

时间:2023-01-05 08:57:03浏览次数:40  
标签:面试题 Java LinkedList Day02 ArrayList 元素 修饰 方法 final

11.this和super的区别?

this指向的是自身的一个对象,代表对象本身,super指向的是自己的一个超类对象,这个超类对象是最近的一个父类.

this()调用的是本类其他构造方法,super()调用的是父类的构造方法.

12.break,continue,return 的区别及作用.

break跳出当前循环,continue结束当前循环进入下一循环,return结束整个方法.

13.抽象类能被final修饰吗?

不能,final修饰的类不能被继承,而抽象类本身就是用来继承的,相悖所以不能.

14.static修饰的方法能调用非static修饰的变量和方法吗?

static修饰的方法只能调用静态方法和变量.

15.局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?

因为生命周期不一致,局部变量保存在栈中,当方法结束后,非final修饰的变量会被销毁,而局部内部类对局部变量的引用仍然存在,调用局部变量的时候就会出错,

16.重载(Overload)和重写(Override)的区别.

重载:方法名称相同,参数类型不同,参数类型:参数数量,参数类型,参数顺序.

重写:发生在父子类中,方法的名称参数必须相同,抛出的异常小于父类,访问修饰符大等于父类

17.构造器(constructor)和是否可被重写(Override)

构造器不能被继承,所以不能被重写,但是可以被重载,

18.Java中创建对象的方式有哪些?

(1)使用new关键字

(2)使用Class类的newInstance方法

(3)使用Constructor类的newInstance方法

(4)使用clone方法

(5)使用反序列化

19.ArrayList和LinkedList的区别?

ArrayList查询速度快(不准确),尾部增删快,头部增删慢,随机访问速度快;LinkedList头尾增删速度快,中间不高,性能远比ArrayList差,不适合做查询;真想做查询用hashMap

(1)是否保证线程安全:ArrayList和LinkedList都不保证线程安全.

(2)底层数据结构:ArrayList底层使用的是数组,LinkedList底层使用的是双链表;

(3)插入和删除是否受元素位置影响:Arraylist采用数组储存,所以插入和删除元素的时间复杂度受元素位置的影响,Linked采用链表储存.所以插入,删除元素时间复杂度不受元素位置影响.

(4)是否支持快速随机访问:LinkedList不支持高效的随机元素访问,ArrayList实现了RandmoAccess接口,所以有随机访问功能.

(5)内存空间占用:ArrayList的空间浪费主要结尾会预留一定的容量空间,LinkedList的空间花费则体现在它每一个元素都需要消耗比ArrayList更多的空间.

20.HashMap底层原理

JDK8以前:数组+双链表;

JDK8以后:数组+双链表+红黑树;

标签:面试题,Java,LinkedList,Day02,ArrayList,元素,修饰,方法,final
From: https://www.cnblogs.com/carney/p/17026516.html

相关文章