一.String的底层实现

首先字符串String可以看成char【】字符数组,其底层实现是byte【】字节数组。

StringRedisTemplate底层是连接池吗 string的底层_数据结构


StringRedisTemplate底层是连接池吗 string的底层_正则表达式_02


因此我们可以知道创建字符串的三种常用的方式为

  1. public String(){}
  2. public String(char value[]) {
    this(value, 0, value.length, null); }
  3. public String(byte[] bytes) {
    this(bytes, 0, bytes.length); }

当然最常见的创建字符串的形式还是String str = “hello”; 这里说明一下 字符串""创建出来的都会在堆中的字符串常量池中。

二.String的常用方法源码及简单演示

1.比较的方法 equals()和equalsIgnoreCase() 前者比较值是否相等,后者忽略大小写比较值是否相等

他们比较的是值是否相等而==号比较的是地址是否相等

StringRedisTemplate底层是连接池吗 string的底层_数据结构_03


StringRedisTemplate底层是连接池吗 string的底层_java_04

StringRedisTemplate底层是连接池吗 string的底层_数据结构_05


加粗样式

2.字符串String关于获取的相关方法

获取字符串长度,返回一个int类型数据!

StringRedisTemplate底层是连接池吗 string的底层_正则表达式_06


获取指定索引位置的的单个字符,传入int类型索引值返回单个字符!

StringRedisTemplate底层是连接池吗 string的底层_数据_07


StringRedisTemplate底层是连接池吗 string的底层_数据_08


查找参数字符串在本字符串中第一次出现的索引位置,如果没有返回-1!

StringRedisTemplate底层是连接池吗 string的底层_数据_09


StringRedisTemplate底层是连接池吗 string的底层_正则表达式_10


将两个或多个字符串拼接为多个字符串!

StringRedisTemplate底层是连接池吗 string的底层_数据_11


StringRedisTemplate底层是连接池吗 string的底层_java_12


3.String字符串的截取方法

截取从参数位置一直到末尾,返回一个新的字符串

StringRedisTemplate底层是连接池吗 string的底层_数据结构_13


StringRedisTemplate底层是连接池吗 string的底层_数据结构_14


截取从begin开始一直到end结束的字符串,注意区间范围【 begin,end)前闭后开

StringRedisTemplate底层是连接池吗 string的底层_正则表达式_15


StringRedisTemplate底层是连接池吗 string的底层_数据结构_16


4.与转换相关的方法

将当前字符串拆分成字符数组作为返回值!

StringRedisTemplate底层是连接池吗 string的底层_数据_17


StringRedisTemplate底层是连接池吗 string的底层_数据_18


获得当前字符串的底层字节数组!

StringRedisTemplate底层是连接池吗 string的底层_java_19


StringRedisTemplate底层是连接池吗 string的底层_数据_20


将所有出现的老字符串替换成新的字符串!

StringRedisTemplate底层是连接池吗 string的底层_字符串_21


StringRedisTemplate底层是连接池吗 string的底层_正则表达式_22


5.字符串分割的相关方法

按照规则将字符串分割成若干部分!

StringRedisTemplate底层是连接池吗 string的底层_数据结构_23


StringRedisTemplate底层是连接池吗 string的底层_正则表达式_24

三.String和StringBuffer区别

1.共同点是都可以操作字符串,即包含多个字符的字符数据。
2.不同点:String类提供的数值是不可以改变的,而StringBuffer提供的字符数据是可以进行修改的。所以当你字符数据要改变的时候就可以使用StringBuffer