String类
一、简单了解:
String
类代表字符串。 Java程序中的所有字符串文字(例如"abc"
)都被实现为此类的实例。字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。
String
类包括用于检查序列的各个字符的方法,用于比较字符串,搜索字符串,提取子字符串以及创建将所有字符翻译为大写或小写的字符串的副本。Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。 字符串连接是通过
StringBuilder
(或StringBuffer
)类及其append
方法实现的。 字符串转换是通过方法来实现toString
,由下式定义Object
和继承由在Java中的所有类。除非另有说明,否则传递null参数到此类中的构造函数或方法将导致抛出
NullPointerException
。
二、简单了解常量池
- 前提 :什么是常量池??
- 池是一种常见的提高效率的方式,常量池是池的一种,还有内存池、线程池.....
- 经常使用的字面类型比如 1,2,3,“hello”.....,为了是程序的运行速度更快,更节省内存,Java 8为8中基本数据类型和String都提供了常量池。
- 首先对象的分配要付出时间和空间上的开销,字符串可以说是和 8 个基本类型一样常用的类型,甚至比 8 个基本类型更加常用,故而频繁的创建字符串对象,对性能的影响是非常大的,所以,用常量池的方式可以很大程度上降低对象创建、分配的次数,从而提升性能。
- 在 JDK 1.7 之后 (包括 1.7),字符串常量池已经从方法区移到了堆中。
2.1关于字符串常量池的一些示例:
2.1.1字面量赋值:
String str1 = "江江江浪";
这种情况下会直接将字符串放到字符串常量池中,然后返回给变量。
String str2 = "江江江浪";
如果再声明一个内容相同的字符串,会发现字符串常量池中已经存在了,那直接指向常量池中的地址即可。
str1 == str2 //true
2.1.2 new String () 方式
与之对应的是用 new String ()