java基础知识点,零基础可以学好java吗?( 二 )

  • 继承性与封装性相互作用 。如果一个给定的类封装了一些属性,那么它的任何子类将具有同样的属性,而且还添加了子类自己特有的属性 。这是面向对象的程序在复杂性上呈线性而非几何性增长的一个关键概念 。新的子类继承它的所有祖先的所有属性 。它不与系统中其余的多数代码产生无法预料的相互作用 。
  • 多态性
    • 多态性是允许一个接口被多个同类动作使用的特性,具体使用哪个动作与应用场合有关,下面我们以一个后进先出型堆栈为例进行说明 。假设你有一个程序,需要3种不同类型的堆栈 。一个堆栈用于整数值,一个用于浮点数值,一个用于字符 。尽管堆栈中存储的数据类型不同,但实现每个栈的算法是一样的 。如果用一种非面向对象的语言,你就要创建3个不同的堆栈程序,每个程序一个名字 。但是,如果使用Java,由于它具有多态性,你就可以创建一个通用的堆栈程序集,它们共享相同的名称 。多态性的概念经常被说成是“一个接口,多种方法” 。这意味着可以为一组相关的动作设计一个通用的接口 。多态性允许同一个接口被必于同一类的多个动作使用,这样就降低了程序的复杂性 。选择应用于每一种情形的特定的动作(specific action)(即方法)是编译器的任务,程序员无需手工进行选择 。你只需记住并且使用通用接口即可 。
    三、 hashmap hashtable
    • HashMap是一个散列表,它存储的内容是键值对(key-value)映射 。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口 。
    • HashMap 的实现不是同步的,这意味着它不是线程安全的 。它的key、value都可以为null 。此外,HashMap中的映射不是有序的 。HashMap的实例有两个参数影响其性能:“初始容量” 和 “加载因子” 。容量是哈希表中桶的数量,初始容量 只是哈希表在创建时的容量 。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度 。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数 。
    四. jvm 内存模型1.程序计数器
    • 每个线程有要有一个独立的程序计数器,记录下一条要运行的指令 。线程私有的内存区域 。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是native方法,则计数器为空
    2.虚拟机栈
    • 线程私有的,与线程在同一时间创建 。管理JAVA方法执行的内存模型 。
    • 本地方法区
    • 和虚拟机栈功能相似,但管理的不是JAVA方法,是本地方法
    3.方法区
    • 线程共享的,用于存放被虚拟机加载的类的元数据信息:如常量、静态变量、即时编译器编译后的代码 。也称为永久代 。
    4.JAVA 堆
    • 线程共享的,存放所有对象实例和数组 。垃圾回收的主要区域 。可以分为新生代和老年代(tenured) 。
    五、 运行时类型信息(RTTI + 反射)