• 纠错


    一,描述抽象类和接口的区别。

    答:1.对一个类而言,只能继承一个抽象类,但可以实现多个接口。

      2.抽象类可以定义类变量,实例变量,类方法,实例方法和抽象方法;接口定义的变量都是用public static final 修饰的,定义的方法都是用public abstract修饰的,而且不能提供代码实现,但在Java8开始,接口也可以通过定义default方法,给方法提供实现。

      3.抽象类使用在继承过程中,体现派生类和基类是 is a 的关系,所以把所有派生类共有的接口都定义在抽象类里面;而类实现一个接口,体现的是has a 的关系,所以把派生类中特有的功能方法放在接口中定义。

    二,解释多态。

    答:基类的引用,引用不同的派生类对象,调用基类和派生类的同名覆盖方法,基类引用引用哪个派生类对象就调用哪个派生类对象的方法,这就是多态使用的基本场景。

           多态的好处就是在处理一系列的派生类时,可以使用统一的基类引用来接受不同的派生类对象,来调用派生类重写的方法,否则需要对每一个派生类都提供入口。

           多态的实现是依赖函数的动态绑定实现的。在运行阶段,通过访问引用变量所引用的对象,然后根据对象地址中的方法表地址,找到该类型的方法表,然后取方法的地址进行方法调用。

    三,描述Comparable接口和Comparator接口的区别。

    答:1.实现Comparable接口要重写compareTo()方法,实现Comparator接口要实现compare()方法。

      2.一般自定义的对象,要实现比较功能,需要implement实现Comparable接口,重写compareTo()方法;如果要自定义对象的多种比较方式,需要提供自定义的实现Comparator接口的匿名对象。

     四,final ,finally ,finalize的区别???

    答:final一般用来修饰类,方法,变量。

      被final修饰的类叫密封类,不能被派生类继承,所以一般用在基类中。

      被final修饰的方法,不能被派生类重写

      被修饰的变量,一般被叫做常量,只能对其赋一次值,后面不能被修改。应用(保证 量的固定值)

     finally :一般被用在异常处理中,放在try  catch 语句块后,不管程序有没有发生异常,finally语句中的代码都会被执行到,所以一般将释放资源的代码都放到finally语句块中。

     finalize:

    (JVM的GC是以固定周期的进行对象回收的,比如GC的周期时间到了,它会找那些没有被引用的对象,判断是无效对象,回收他们的堆内存,但如果对象重写了finalize方法,那么GC在当前回收周期会调用对象的finalize方法,然后在下一个GC周期再回收对象堆内存。)

    五,String类型在底层运行的方式

     String类型字符串在进行字符拼接时,在底层其实是用StringBuilder进行的。

    分析:

     1.String  str="hello";   这是定义了一个String类型的字符串,并对其进行赋值。

     

     2. str=str+"wor";  执行这句代码时,发现要进行字符串连接。于是new了一个StringBuilder类型的对象,并调用默认构造函数对其赋初值,接着调用StringBuilder类的append()方法两次,将自身和要拼接的字符串依次添加进,实现行字符串拼接。然后调用StringBuilder的toString()方法将字符从StringBuilder类型转化成String类型,(其底层是新new了一个String类型的对象,将要转换的参数传给他),最后赋给左边的str。(程序先执行等号右边,在执行等号左边)

      所以在进行连接和赋值的过程中要new两个对象。

     3.str=str+"ld";同上。

     六,String, StringBulider, StringBuffer  ,的区别???

    答:1.String 是一个不可变类,而StringBuilder是一个可变类。

            2.在循环中使用String,其效率很低,每次进行字符串连接时都要生成新的String对象。此时应使用StringBuilder,用append方法进行字符串连接,再用toString()方法将其转为String类型的字符串。

            3.StringBuffer相当于是线程安全的StringBuilder,专门用于多线程环境中。

           

  • 相关阅读:
    el-select remote 远程搜索 多个共享一个options,options改变时输入框值不显示名称的问题
    vue 中数据共享的方式
    关于AI本质的思考
    人工智能——一场精妙的商业炒作
    相关下载链接
    只用两个问题通关《极限挑战皇家宝藏》最后一关
    常见图片格式详解
    改写《python基础教程》中的一个例子
    介绍四款windows下的神器
    实现windows批处理下的计时功能
  • 原文地址:https://www.cnblogs.com/ljl150/p/11745136.html
Copyright © 2020-2023  润新知