当前位置 博文首页 > 超负荷小生的博客:java基础知识刷题总结

    超负荷小生的博客:java基础知识刷题总结

    作者:[db:作者] 时间:2021-09-08 19:42

    final刷题总结:

    final修饰变量(属性):
    1、final修饰变量能被显示地初始化并且只能初始化一次;final修饰符通常和static修饰符一起使用创建类常量。
    2、final关键字修饰一个变量时等同于常量,引用变量不能变(不能被再次赋值),引用变量所指向的对象中的内容还是可以改变的。

    final修饰类:
    1、final修饰的类是最终类,final类不能被继承和改写。
    2、final不能修饰抽象类,抽象类一般都需要被继承
    3、final类的方法能否被同一个包的类访问不是final决定

    final修饰方法:
    1、final修饰的方法可以被重载但不能被重写
    2、final修饰的方法中的参数,称为最终参数

    抽象类刷题知识点总结:

    抽象类:
    1、抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
    2、抽象类可以不包含抽象方法,但是有抽象方法的类一定要声明抽象类。(只要包含一个抽象方法的类,该类必须要定义成抽象类,不管是否还包含有其他方法。)
    3、抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
    4、构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
    5、抽象类的子类必须给出抽象类中的抽象方法的具体实现(抽象方法必须由子类来进行重写),除非该子类也是抽象类。
    6、抽象类不允许多继承
    7、抽象类可以有构造函数
    8、abstract 不能与private、static、final或native并列修饰同一个方法。
    9、定义的抽象方法没有实体时候,大括号必须省略。
    10、JDK 1.8以前,抽象类的方法默认访问权限为protected
    JDK 1.8时,抽象类的方法默认访问权限变为default
    抽象类和接口区别和联系:
    1、抽象类中可以有普通成员变量,接口中没有普通成员变量。
    2、抽象类和接口中都可以包含静态成员常量。
    3、一个类可以实现多个接口,但只能继承一个抽象类
    4、抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。(JDK1.8后,接口中可以有静态方法,静态方法必须有方法体
    5、一个抽象类可以是public、private、protected、default, 接口只有public;
    6、一个抽象类中的方法可以是public、private、protected、default, 接口中的方法只能是public和default
    7、抽象类可以含有私有成员变量,接口不含有私有成员变量。

    HashTable和HashMap的区别

    1、Hashtable 是一个哈希表,该类继承了Dictionary,实现了map接口。(Dictionary->Hashtable->Properties)
    2、Hashtable 线程安全的,而 HashMap 是线程不安全的
    3、HashTable使用Enumeration,HashMap使用Iterator
    4、HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
    5、HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
    6、HashMap的数据结构是怎样的:数组+链表
    7、HashMap实现Map接口,它允许任何类型的键和值对象,并允许将NULL用作键或值 一个null

    ArrayList和LinkedList

    1、ArrayList和LinkedList均实现了List接口
    2、ArrayList访问速度比LinkedList快
    3、ArrayList线程不安全的,允许存放重复对象
    4、ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构
    5、对于随机访问get和set,ArrayList优于LinkedList,因为LikedList要移动指针
    6、对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
    7、ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。

    构造函数

    1、构造方法的方法名必须与类名相同。
    2、构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
    3、构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
    4、一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
    5、构造方法可以重载,以参数的个数,类型,顺序,因此构造器可以有0个,1个或一个以上的参数

    重载和重构

    重载是一个类中多态性的一种表现;重写是父类与子类之间多态性的一种表现

    重载的规则:
    1、必须具有不同的参数列表;
    2、可以有不同的返回类型,只要参数列表不同就可以;
    3、可以有不同的访问修饰符;
    4、可以抛出不同的异常;
    5、方法能够在一个类中或者在一个子类中被重载。
    重写的规则: 两同,两小,一大
    1、方法名相同
    2、参数类型相同
    3、子类返回类型小于等于父类方法返回类型
    4、子类抛出异常小于等于父类方法抛出异常
    5、子类访问权限大于等于父类方法访问权限。

    其他

    1、实现了GBK编码字节流到UTF-8编码字节流的转换
    dst=new String(src,“GBK”).getBytes(“UTF-8”)
    2、局部类可以用哪些修饰符修饰: abstract 和 final
    3、Math中的round方法,求的值就是取小于等于(参数+0.5)的最大整数。
    4、java8中,忽略内部接口的情况,不能修饰interface里的方法的有:private protected
    5、什么操作会使得当前线程停止?
    1)、一个异常抛出,或导致线程停止(An InterruptedException is thrown)
    2)、线程执行了wait()方法。线程使用了wait方法,会强行打断当前操作,(暂停状态,不会中断线程) 进入阻塞(暂停)状态,然后需要notify方法或notifyAll方法才能进入就绪状态。
    3)、线程在MediaTracker上执行了waitforID()调用,

    cs