一个对象实例化的过程

一个对象实例化的过程

栗子:Cat cat = new Cat();
1、JVM会根据指定路径读取Cat.class文件,并加载进内存,有父类(如:Animal)的情况下,会先加载父类的.class文件(即Animal.class)。
2、在堆内存开辟空间,分配地址
3、在对象空间中,对对象的属性进行默认初始化。

  • 3.1调用对应构造函数进行初始化,这个栗子中,调用的就是,无参构造函数
  • 3.2在构造函数中,第一行会到调用父类中构造函数进行初始化
  • 3.3父类初始化完毕后,再对子类属性进行显示初始化

4、再进行子类构造函数的特定初始化
5、初始化完毕后,将地址赋值给引用变量。


能存储映射关系的容器有数组和Map集合。
【注】集合里存的是引用
对体系:看顶层,用底层。
数值有很多用数组存,数组很多用二维数组存
数据很多用对象存,对象很多用集合(Collection)存。[集合仅存对象,且长度可变]

思考:如何记录每一个容器的结构和所属体系呢?
后缀名就是该集合所属体系
前缀名就是该集合的数据结构
看到array:就要想到就要想到数组,就要想到查询快,有角标
看到link:就要想到链表,想到增、删快,就要想到add、get、remove、first、last方法
看到hash:就要想到哈希表,就要想到唯一性,就要想到元素需要覆盖hashcode方法和equals方法
看到tree:就要想到二叉树,就要想到排序,就要想到2个接口comparable,comparator

思考:如何选择正确的集合?
需要唯一性吗?

  • 需要:Set
    需要制定顺序吗?
    • 需要:TreeSet
    • 不需要:HashSet
      想要一个和存储一一致的顺序(有序):LinkedHashSet
  • 不需要:List
    需要频繁操作吗?
    • 需要:LinkedList
    • 不需要:ArrayList

复用问题总结:
1.同一个类—————》方法
2.两个类 ———变量、方法——》a.基类(抽)、b.组合类、c.接口
3.参数类型 ———————》泛型 :方法和类
4.两个项目———类———》DLL和package

猜你喜欢

转载自blog.csdn.net/baidu_35160588/article/details/88366879