2021-05-26 面向对象与 Java API 常用类部分试题

1、什么是类?什么是对象?类和对象有什么关系?

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为、状态、抽象。
  • 类和对象的关系:类是概念性模型,抽象的,是对象的类型。对象是类的实例。

2、类中可以包含哪些元素?静态代码段,构造方法,构造代码段,三者执行顺序如何?

  • 类中包含属性、成员方法、构造方法、代码段
public static void main(String [] args){
    private int a;//实例属性
    public static int x = 1; // 静态常量,运行期不会改变的值
    public static final int y = 1;
    // 静态代码段
    static{
        
    }
    
    // 普通代码段,实例代码段,构造代码段
    {
        System.out.println("")
    }
    public Review01(){
        
    }
    public void t(){
        
    }
}
  • 执行顺序:静态代码块>构造代码块>构造方法>普通代码块

    • 静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。
    • 构造代码块在创建对象时被调用,每次创建对象都会调用一次,但是优先于构造方法执行。
    • 构造方法不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
    • 普通代码块和构造代码块的区别是,构造代码块是在类中定义的,而普通代码块是在方法体中定义的。且普通代码块的执行顺序和书写顺序一致。

3、构造方法什么时候执行?构造方法可以私有化吗?

  • 构造代码块在创建对象时被调用,每次创建对象都会调用执行一次。
  • 构造方法可以私有化,私有后不能在类以外用new创建。()
public class Review{
    private Review{
        static Review r = new Review();
    }
    
    public statoc Review getInstance(){
        return r;
    }
}

4、什么是重载?重载有什么好处?

  • 重载:在同一个类中,方法名相同,形式参数不同称为方法的重载。(构造方法也可以重载!)
  • 好处:实现方法名的复用,减少代码的冗余,提高代码可读性。

5、this关键字的作用?

  • this可以调用本类中的属性,也就是类中的成员变量;
  • this可以调用本类中的其他方法;
  • this可以调用本类中的其他构造方法,调用时要放在构造方法的首行。

6、Final关键字的作用?

final关键字有三种用途,可以分别应用于变量、成员方法和类:

  • 修饰类:用来修饰类时,这个类不能被继承;
  • 修饰属性:用来修饰属性时,表示这个属性是常量;
  • 修饰方法:用来修饰方法时,表示这个方法不能被重写;

7、Static关键字的作用?

  • 修饰类:用来修饰类时,前提是这是一个内部类,这个类不能被继承;
  • 修饰属性:用来修饰属性时,表示这个属性是类所以,所有实例共享,调用方法:类名.属性名或者对象名.属性名;(静态属性,类所有)
  • 修饰方法:用来修饰方法时,表示这个方法是属于类所有,类名.方法名或者实例名.方法名, 建议使用类名.方法名来修饰方法;(静态方法,类所有)

8、什么是继承? A is B 用什么关键字表示继承?

  • 继承:继承实现了代码的重用,类A可以使用类B中的属性和方法,是利用现有的类创建新类的过程,现有的类称作基类(或父类),创建的新类称作派生类(子类)
  • extends关键字

9、什么是重写?

  • 重写发生在继承关系的子类中,对父类中的一个方法重新实现或者拓展(子类重写父类的方法!)
  • 语法结构:

    • 子类的方法签名和父类的一致
    • 在方法有返回值的情况下,子类返回值类型可以和父类一致,或者是父类返回值的类型的子类。
    • 参数列表必须相同,但参数的引用名可以不同。
    • 修饰符:范围可以扩大但是不能缩小 publiuc > protected > default > private

10、抽象类和接口有什么区别?

  • 抽象类:本质是类,单继承,可以包含抽象方法,普通方法,构造方法
  • 接口:支持多继承,可以包含抽象方法,公共常量,默认方法,静态方法,无构造方法。
abstract class 抽象类interface 接口
属性不用限制public静态常量
构造方法可有可无没有
普通方法可以有具体方法必须是public抽象方法
子类单一继承多重实现(接口继承接口时为多重继承)

11、Super的作用是什么?

  • super可以用在子类的构造方法中;调用父类的属性或者方法 ,super必须是子类构造中个第一行代码;
  • super放在子类的普通方法中,可以调用父类的公共的方法: super.父类方法名();

12、接口中可以包含哪些元素?

[访问权限] interface 接口名 {
    公开静态常量列表;
    公开抽象方法列表;
}

13、一个类是否可以继承另外一个类同时实现接口? 语法格式如何?

  • 可以,语法格式如下:
public class A extends B implements IA {
    
}

14、什么是多态?多态的实现方式有什么?

  • 多态性:指允许不同类的对象对同一消息(方法)做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
  • 多态的实现方式:(通过继承/接口的方式)

    • 创建父类,定义方法
    • 创建子类重写父类的方法
    • 场景类中,有一个方法,父类引用作为参数
    • 实际调用的时候传递的参数为子类对象

15、String 类equals方法实现了什么功能?

  • String类中的equals方法是对父类Object类中的equals方法的覆盖重写,重点实现的是将字符串拆分位字符数组,将每个字符依次比较,返回值为两个字符串的内存是否相等,如果相等则返回true,否则返回false

16、8个基本类型对应的包装类是哪些?

类型字节型短整型整型长整型单精度 浮点型双精度 浮点型字符型布尔型
基本数据类型byteshortintlongfloatdoublecharboolean
包装器类型ByteShortIntegerLongFloatDoubleCharacterBoolean

17、如何将字符串转换为Integer类型?

public static void main (String [] args){
    String str = "123";
    int n = Integer.parseInt("123");
    Interger i = Integer.valueOf("123");
    System.out.println(i);
}

18、String,StringBuffer,StringBuilder有什么不同?

  • String:字符串不可变,值在创建后不能被更改
  • StringBuffer:可变字符串,线程安全
  • StringBuilder:可变字符串,非线程安全

19、写出5个字符串的常见方法。

  • charAt(int index) :返回char指定索引处的值
  • length() :返回此字符串的长度
  • intern() :返回字符串对象的规范表示
  • index of:返回指定字符第一次出现的字符串内的索引
  • split():将此字符串分割为给定的匹配
  • replace:替换
  • trim() :返回一个字符串,并删除任何前面和后面的空格
最后修改:2021 年 06 月 22 日 01 : 12 AM
如果觉得我的文章对你有用,请随意赞赏