欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA学习中的知识点

程序员文章站 2024-03-25 10:41:12
...

1.继承关系中的子类实例化执行过程详解

父类Animal,子类Cat,则Cat cat = new Cat()的执行顺序
实例化子类的类加载执行顺序:父类的静态属性及其静态代码块(从上到下顺序执行)一>子类的静态属性及其静态代码块一>子类的构造方法(但不执行里面的代码)一>父类的构造方法(但不执行里面的代码)一>Object类一>父类的非静态属性一>父类的构造代码块一>父类构造方法里的代码一>子类的构造代码块一>子类构造方法里的代码

注:
当执行Cat cat = new Cat(name,age)时,如果在子类的带参构造方法中没有显式标注的话,即super(name,age)时,仍然会执行父类的无参构造方法,如果父类无参构造方法没有,则直接编译报错。

2.包装类

缓冲区(对象池)
除了Double和Float,其他包装类都有缓冲区(-128~127之间的数)的概念,即:
Integer i1 = 100;
Integer i2 = 100;
则i1 == i2是true的,但是大于127或者小于-128的数则不对。

3.多态

多态分为编译时多态和运行时多态,编译时多态指的是对象引用本类的实例,方法重载是编译时多态的体现;运行时多态指在继承中,父类对象引用子类实例(父类 f = new 子类()),父类对象会调用子类中重写的方法,无法调用到子类独有的方法。

4.List、Set、Queue(collection)以及Map

List(ArrayList、LinkedList)

  1. list是有序的且可以重复的集合,它可以直接通过get方法获取内容,当然也可以通过迭代器Iterator获取。

Set(HashSet)

  1. set是无序的且不可以重复的集合,它不可以通过get方法获取,只能通过增强for循环或者迭代器方式获取。这里的不可重复不是指新增重复的内容后编译报错,而是新增重复的内容无法生效。

  2. 如果set里保存的是对象,即使对象的内容一样也不会当作是重复内容,只有重写equals方法才可以。

    List<E> list = new ArrayList<>();
    Set<E> set = new HashSet<>();
    Iterator it  = list/set.iterator();
    while (it.hasNext()){
        System.out.println(it.next());
    }
    
    Set<E> set = new HashSet<>();
    for (Object it:set) {
         System.out.println(it);
     }
    

Queue(LinkedList)


Map(HashMap)

  1. 无序的键值对。

  2. Key值不允许重复,但Value值可以重复。Key和Value可以为null值,但Key只能存在一个null,而Value可以存在多个null。

  3. 当添加Key值重复的数据时,实际上相当于修改操作,保留的是后面新增的内容。

    Map<String,String> map = new HashMap<>();
    Set<Map.Entry<String,String>> set = map.entrySet();
    for (Map.Entry<String,String> entry:set) {
        System.out.println(entry.getKey()+"  "+entry.getValue());
    }
    

5.线程

线程的实现方式分为1.继承Thread类、2.实现Runnable接口,推荐使用第二种方式。
这两种方式的区别:

  1. java由于不支持多继承,第一种方式不利于代码的健壮性;
  2. 实现Runnable接口只有run()一个重写方法,而继承Thread类的时候有多个方法可供重写使用;
相关标签: IT JAVA 学习