String类型是java的核心类,属于lang包下。
我们在接触java的时候就接触String类型,比如HelloWorld.java里,System.out.println(“HelloWorld“);的“HelloWorld”就是一个String类型。
String类型的底层是数组,通过数组的特性,我们可以知道,String类型的长度是固定的,无法进行插入操作。Jdk9.0之前底层数组是char[]类型,jdk9.0后就改为byte[],原因是该char类型需要2个字节,byte[]只需要1个字节。比如说我们要存储一个a,如果在jdk9.0之前我们需要用char类型来存储,那么存储空间就需要两个字节,按照byte类型来存储,a只需要1个字节,在我们的数据当中,大多数是26个英文字母,所以用char类型来存储这些英文字母很浪费存储空间。
String类型的常用方法在这一章里有6个,分别是:
- Concat(String str); 类似于“+“操作。
- Split():通过分隔符将String变为String[],从而分隔每个字符串
- Trim():将字符串收尾的空格符号去除,该特性能够用于账号密码输入,从而提高程序的准确性。
- IndexOf():该方法能够将符合查询内容的位置返回,从而能够获得该内容的位置。
- Substring():该方法联合indexOf()能够做很多事情,比如能够获得符合查找内容往后或者往前的字符串内容。
- Length():该方法获得String的长度。
为了弥补String无法改变长度的缺陷,于是有了另外一个类StringBuffer,该类能够满足String的缺陷,同时通过阅读底层代码我们能够知道,长度不够就扩容,扩容长度为原来的2倍+2。
StringBuffer有3个常用方法
- append():将内容添加到调用的数据后,与concat()的区别是,concat只能添加字符串,append能够添加其他数据类型
- insert():能够将内容插入到指定位置上
- toString():能够将StringBuffer类型转换为String类型
上面介绍了String类是什么东西,有什么方法,接下来介绍一下String类怎么用。
平常我们都是通过直接赋值的方式来给String类型的变量赋值的,但是我们通过学习面向对象后,我们其实还能够通过new String(value)的方式来创建String类型的变量。
他们两个之间是有区别的,new String()是会在堆里面创建了一个实例,然后再指向方法区常量池,直接赋值是直接指向方法区的常量池,所以他们两个如果进行==比较的话,他们的地址值是不一样的,也就是不相等。
同时String类型还原生实现了Serializable接口,这说明String类型是能够序列化的,意味着String类型能够在不同计算机间,在网络间进行传播