数据结构(Java实现)-字符串常量池与通配符

字符串常量池
在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、更节省内存,Java为8种基本数据类型和String类都提供了常量池。


“池” 是编程中的一种常见的, 重要的提升效率的方式, 我们会在未来的学习中遇到各种 “内存池”, “线程池”, “数据库连接池” …
比如:家里给大家打生活费的方式

  1. 家里经济拮据,每月定时打生活费,有时可能会晚,最差情况下可能需要向家里张口要,速度慢
  2. 家里有矿,一次性打一年的生活费放到银行卡中,自己随用随取,速度非常快
    方式2,就是池化技术的一种示例,钱放在卡上,随用随取,效率非常高。常见的池化技术比如:数据库连接池、线程池等。

字符串常量池(StringTable)
字符串常量池在JVM中是StringTable类,实际是一个固定大小的HashTable(一种高效用来进行查找的数据结构)
数据结构(Java实现)-字符串常量池与通配符_第1张图片


再谈String对象创建
直接使用字符串常量进行赋值
数据结构(Java实现)-字符串常量池与通配符_第2张图片
数据结构(Java实现)-字符串常量池与通配符_第3张图片


通过new创建String类对象
数据结构(Java实现)-字符串常量池与通配符_第4张图片只要是new的对象,都是唯一的。


intern方法
该方法的作用是手动将创建的String对象添加到常量池中。
数据结构(Java实现)-字符串常量池与通配符_第5张图片数据结构(Java实现)-字符串常量池与通配符_第6张图片


通配符
? 用于在泛型的使用,即为通配符
可以接收所有的泛型类型,但是又不能够让用户随意修改。这种情况就需要使用通配符"?"来处理
数据结构(Java实现)-字符串常量池与通配符_第7张图片


在"?"的基础上又产生了两个子通配符:
? extends 类:设置通配符上限
? super 类:设置通配符下限


通配符上界
在这里插入图片描述
数据结构(Java实现)-字符串常量池与通配符_第8张图片
通配符的上界,不能进行写入数据,只能进行读取数据。
在这里插入图片描述


通配符下界
在这里插入图片描述
数据结构(Java实现)-字符串常量池与通配符_第9张图片
通配符的下界,不能进行读取数据,只能写入数据。


你可能感兴趣的:(数据结构(Java实现),数据结构,java,python)