Bootstrap

字符串常量池、泛型、包装类

一、字符串常量池

2.1 池以及常量池的概念

  1. 关于池的概念:编程中常见的用于提升效率的方式,当需要某个东西时,直接去池里拿,不用再自己创建,用完就放回去,效率很高。为了节省存储空间 + 提高效率,Java中引入了下面这些池子
    • Class文件常量池:每个java源文件编译后生成.Class文件中会保存当前类中的字面常量以及符号信息
    • 运行时常量池:在.Class文件被加载时,.Class文件中的常量池被加载到内存中称为运行时常量池,运行时常量池每个类都有一份
    • 字符串常量池
  2. java为基本数据类型和String类都提供了常量池:Java中经常会使用字面类型的常量,为了提升效率+节省内存,Java为8种基本数据类型和String类都提供了常量池

2.2 字符串常量池

  1. 字符串常量池的不同形式:字符串常量池在JVM中是 StringTable类,其实际是一个固定大小的HashTable(哈希表),不同JDK版本下字符串常量池的位置以及默认大小是不同的

    • jdk6:字符串常量池在方法区,默认大小为1009且固定
    • jdk7:字符串常量池在堆中,默认大小为60013(大小可以设置,没有限制)
    • jdk8:字符串常量池在堆中,最小为1009(可设置且有范围限制)
  2. 字符串常量池示例
    在这里插入图片描述

  3. 关于intern方法

在这里插入图片描述

在这里插入图片描述

二、泛型

2.1 泛型的概念及使用

  1. 概念:泛型就是【适用于许多类型】,从代码上看就是【可以将类型作为参数传递】,让类型实现了参数化
    • 是jdk5引入的语法
  2. 为什么我们需要使用泛型
    在这里插入图片描述
  3. 泛型的基础使用
    在这里插入图片描述
    在这里插入图片描述
  4. 建议的泛型写法
    在这里插入图片描述

2.2 泛型的擦除机制

  1. 什么是擦除机制
    在这里插入图片描述
    在这里插入图片描述

2.3 泛型的上界

在这里插入图片描述在这里插入图片描述

2.4 通配符

  1. 什么是通配符: ? 在泛型的使用

  2. 为什么需要通配符
    在这里插入图片描述

  3. 通配符的上下界:通配符是有边界的

    • 通配符上限:<? extends 上界>,上界是个类

      • 示例:<? extends Number> -----> 可以传入的参数类型是 Number 或者 Number 的子类
        在这里插入图片描述
    • 通配符下限:<? super 下界>,下界是个类

      • 示例:<? super Number> -----> 可以传入的参数类型是 Number 或者 Number 的父类
        在这里插入图片描述

2.5 如何越过 泛型类 直接调用 泛型方法

在这里插入图片描述
在这里插入图片描述

三、包装类

3.1 什么是包装类

  1. 概念:包装类就是基本数据类型对应的类类型
    • Java中有8种基本数据类型
  2. 形式:除了 Integer 和 Character ,其余基本类型的包装类都是首字母大写
基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

3.2 为什么要有包装类

  1. 原因:让【基本数据类型】可以【面向对象】
    • 因为类是面向对象的,所以可以让基本数据类型创建出对象,并借助类中的方法/属性实现类型上的一些操作

3.3 装箱和拆箱

  1. 概念

    • 装箱/装包:基本类型------------>包装类型
    • 拆箱/拆包:包装类型------------>类型类型
  2. 装箱/装包代码
    在这里插入图片描述
    在这里插入图片描述

  3. 拆箱/拆包代码
    在这里插入图片描述

;