JavaSE 面试题 1-5

1.面向对象的理解

面向对象在Java中就是万物皆对象,面向对象拥有三大特征

1.封装:将数据及操作数据的若干方法进行封装,对外只提供接口以便于外界对数据进行访问和修改。

2.继承:在Java中创建类时可以使用现有父类的数据信息(变量,方法等),可以实现方法的复用和减少冗余代码。

3.多态:父类引用指向子类对象,声明的父类对象都可以用子类对象做替换,允许同一父类的不同子类对象对同一事件做出不同相应;

4.抽象:从一类相似的对象中抽出他们的共同特征封装成方法,包括数据抽象和行为抽象;

2.int 和 Integer有什么区别

int:是基本数据类型,可以存储int型数据,用int定义数据时对象中存的就是实际的值,

integer:是引用数据类型,可以存储int型数据,定义的是integer类型的对象,对象中存储的是指向具体数据的地址,使用时需要实例化,可以使用集合来方便的操作。

栈存储integer变量的引用,堆存储new出来的实例

3.==和equals的区别

==比较基本数据类型时比较的是数值,比较引用数据类型时,比较的是地址值;

equals 在没有重写的情况下比较的是地址值,重写过一般比较实际的值;

equals是从Object类中继承,底层也是使用==实现;

4.反射的理解

Java面向对象语言的一个特点,即允许我们在程序运行时对类进行信息检查和修改等,通过反射我们可以动态地获取类的信息(成员变量,成员方法,构造方法)。

1.运行时动态创建类的实例,无需知道类的具体信息;

2.运行时动态调用对象的方法,即使该方法在编译时不可知;

3.反射允许我们对类的私有字段进行访问和修改,便于一些框架和库的操作

4.提供丰富API对类的信息进行查询

优点:
  • 灵活性:提高了程序的灵活性,可以在运行时动态地操作对象。
  • 可扩展性降低了类之间的耦合度,便于系统的维护和扩展。
缺点:
  • 性能开销:反射操作通常比直接代码执行要慢,因为它涉及到类型检查和安全检查等额外操作。
  • 安全性问题:反射允许访问类的私有成员,这可能破坏封装性,导致安全问题。
  • 可读性和可维护性:过度使用反射可能会使代码难以理解和维护,因为它隐藏了类的具体实现细节。

5.ArrarList 和 LinkedList 区别

ArrarList:底层是数组,查找容易增删(移动数据过多)难,

LinkedList:底层是链表,增删方便(指针实现简单)查找难(必须找到查找结点的前一个节点)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值