字符串常量池
在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、更节省内存,Java为8种基本数据类型和String类都提供了常量池。
“池” 是编程中的一种常见的, 重要的提升效率的方式, 我们会在未来的学习中遇到各种 “内存池”, “线程池”, “数据库连接池” …
比如:家里给大家打生活费的方式
- 家里经济拮据,每月定时打生活费,有时可能会晚,最差情况下可能需要向家里张口要,速度慢
- 家里有矿,一次性打一年的生活费放到银行卡中,自己随用随取,速度非常快
方式2,就是池化技术的一种示例,钱放在卡上,随用随取,效率非常高。常见的池化技术比如:数据库连接池、线程池等。
字符串常量池(StringTable)
字符串常量池在JVM中是StringTable类,实际是一个固定大小的HashTable(一种高效用来进行查找的数据结构)
再谈String对象创建
直接使用字符串常量进行赋值
通过new创建String类对象
只要是new的对象,都是唯一的。
intern方法
该方法的作用是手动将创建的String对象添加到常量池中。
通配符
? 用于在泛型的使用,即为通配符
可以接收所有的泛型类型,但是又不能够让用户随意修改。这种情况就需要使用通配符"?"来处理
在"?"的基础上又产生了两个子通配符:
? extends 类:设置通配符上限
? super 类:设置通配符下限
通配符上界
通配符的上界,不能进行写入数据,只能进行读取数据。
通配符下界
通配符的下界,不能进行读取数据,只能写入数据。