java基础面试(二)

1.什么是构造方法?

  • 构造方法名与类名相同
  • 没有返回值,且不能用void声明构造方法
  • 创建对象时,使用new 关键字调用执行(显式调用)

2.构造方法的作用是什么?

主要作用是完成创建对象的初始化工作;

一个类即使没有生命构造方法,java也会提供默认的无参构造;

如果我们为类提供了构造方法,那么默认的无参构造就会消失;

3.什么是多态?

顾名思义,表示一个对象的多种状态。具体表现为父类的引用指向子类的实例。

多态的特点:不能通过父类去调用只在子类中存在而不在父类中存在的方法;对象类型和引用类型之间必须具有继承或实现关系;在多态中,如果子类重写了父类的方法,那么真正执行的是子类重写过后的方法,如果没有重写执行的是父类的。

4.什么是重载与重写?

重写:子类对父类的内部逻辑进行重新构造,外部不发生不变化

  • 重写发生在运行
  • 重写必须发生在子父类之间
  • 返回值类型、方法名、参数列表与父类一致,抛出的异常小于等于父类,访问权限修饰符大于等于父类
  • 如果父类方法被private/final/static修饰,那么子类不能重写父类的此方法

重载:同一个类中,多个同名方法根据不同的传参,执行不同的逻辑处理

  • 重载发生在编译
  • 重载发生在同一个类中
  • 方法名相同、方法的参数列表不同(类型不同、顺序不同、个数不同),与方法的返回值无关
  • 构造方法可以被重

5.成员变量和局部变量的区别?

(1)成员变量是属于类的,而局部变量是在代码块中或方法中定义的或是方法的参数。

(2)成员变量可以被public,private,static等修饰符修饰,而局部变量要是被控制符或static修饰是不能被访问的;但是两者都能被final修饰

(3)如果成员变量被static修饰,那就是属于类的;如果没有被修饰就属于对象的。对象存在于堆内存中,局部变量存在于栈内存中

(4)成员变量是对象的一部分,它随着对象的创建而存在;而局部变量会随着方法的调用而消失

(5)成员变量如果没有被赋值,则会自动以类型默认的值而赋值,但局部变量不会自己赋值

6.抽象类和接口有什么区别?

(1)抽象类被static定义,接口使用interface定义

(2)实现抽象类使用extends继承,实现接口用implements

(3)抽象类中可以有抽象方法和非抽象方法,而接口中只有抽象方法

(4)抽象类中有main方法,接口中没有

(5)一个类只能继承一个抽象类,但是可以实现多个接口

(6)抽象类中可以有构造方法,接口中不允许

(7)接口中的方法只能使用public修饰,但抽象类中的方法没有限制

7.什么是数组?

(1)数组是一种引用类型数据,用于保存一组相同数据类型的数据,长度固定

(2)使用连续的内存空间存储,所以元素有序,遍历速度很快

(3)下标从0开始,最后一个length-1;超出会报出ArrayindexOutOfBoundsException异常

8.static关键字的用法

(1)修饰成员变量和成员方法:被static修饰的成员变量属于静态成员变量;被static修饰的成员方法属于静态方法,可以被类中的所有对象共享,通过类名或者对象名调用

(2)静态代码块定义在类中,执行顺序是静态属性、静态代码块、实例属性、非静态代码块、构造方法;不管创建多少个对象,静态代码块只执行一次

9.静态方法和实例方法的区别

(1)静态方法属于类本身,实例方法属于类的某个对象实例

(2)在调用静态方法时,使用类名.方法名或者对象名.方法名;在调用实例方法时,使用对象名.方法名。也就是说调用静态方法无需创建对象

(3)静态方法在访问本类成员时,只能访问静态成员,不允许访问实例成员变量和实例方法;而实例方法没有限制

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值