String部分

String
字符串
java.lang ;基本标识
Java字符串的一个重要特点就是字符串不可变。
final class String 没有子类
字符串字面量也是一个String类的实例
存储在字符串常量池中,相同的字符串字面量表示的对象在内存中只有一份。

字符串String类型本身是final声明的,
    意味着我们不能继承String,也就意味着我们不能去重写他的方法。

 jdk8        private final char value[];
    String 不可变对象

jdk9    final byte[] value;

构建
“” 引号构建,还有+
构造器的方式
String s1 = new String("你好");

字符数组构建(不好用,先建立字符数组,然后转换,吐槽,辣鸡A_A,优点是可以选择性的选择需要的字符进行转换)

一些常用的方法

常见的
    boolean isEmpty():字符串是否为空
    int length():返回字符串的长度
    String concat(xx):拼接,等价于+
    boolean equals(Object obj):比较字符串是否相等,区分大小写
    boolean equalsIgnoreCase(Object obj):比较字符串是否相等,区分大小写
    int compareTo(String other):比较字符串大小,区分大小写,按照Unicode编码值比较大小
    int compareToIgnoreCase(String other):比较字符串大小,不区分大小写
    String toLowerCase():将字符串中大写字母转为小写
    String toUpperCase():将字符串中小写字母转为大写
    String trim():去掉字符串前后空白符

查找的
    boolean contains(xx):是否包含xx,一个大串中是否含有xx这个小的
    int indexOf(xx):从前往后找当前字符串中xx,即如果有返回第一次出现的下标,要是没有返回-1
    int lastIndexOf(xx):从后往前找当前字符串中xx,即如果有返回最后一次出现的下标,要是没有返回-1

字符串截取
    String substring(int beginIndex) :返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。截取长度为( beginIndex  ,  数组最后一个字符   )
    String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。 

字符相关
    char charAt(index):返回[index]位置的字符
    char[] toCharArray(): 将此字符串转换为一个新的字符数组返回
    String(char[] value):返回指定数组中表示该字符序列的 String。 
    String(char[] value, int offset, int count):返回指定数组中表示该字符序列的 String。
    static String copyValueOf(char[] data): 返回指定数组中表示该字符序列的 String
    static String copyValueOf(char[] data, int offset, int count):返回指定数组中表示该字符序列的 String
    static String valueOf(char[] data, int offset, int count) : 返回指定数组中表示该字符序列的 String
    static String valueOf(char[] data)  :返回指定数组中表示该字符序列的 String
    getBytes()

首尾
    boolean startsWith(xx):是否以xx开头
    boolean endsWith(xx):是否以xx结尾

正则(基本上爬虫那些,但是不太会涉及贪婪和非贪婪)
    正则表达式:
    文本校验        
    正则是一门独立的语言 与java是兄弟关系
        []匹配单个字符    
            [AB] 可以匹配A , B   
             [A-Z]   
             [a-z]   
             [A-z]

        \w: 字母数字下划线
        \d: 所有的数字
        ?:0次或1次
        *: 0次或多次
        +: 1次或多次{
        n}: 重复n次
        {n,m}: 重复[n,m]次
        {n,}: 至少重复n次
        ^:    
            [^BC]:只要不是BC就可以    
            ^A:以A开头

        $: 以xxx结尾


替换
    String replace(xx,xx):不支持正则
    String replaceFirst(正则,value):替换第一个匹配部分
    String repalceAll(正则, value):替换所有匹配部分

拆分
    String[] split(正则):按照某种规则进行拆分

字符串对象的内存分析
字符串拼接
如果是 常量+常量 结果是字符串常量
如果是 变量+变量 结果是创建一个StringBuilder对象 对字符串内容进行拼接
如果是 变量+常量 结果是创建一个StringBuilder对象 对字符串内容进行拼接
拓展:
intern():
1.查看常量池内是否有此结果 有直接返回常量池的地址
2.如果没有将此内容放到常量池 再返回常量池结果


StringBuilder&StringBuffer
因为String对象是不可变对象,虽然可以共享常量对象,但是对于频繁字符串的修改和拼接操作,效率极低。因此,JDK又在java.lang包提供了可变字符序列StringBuilder和StringBuffer类型。
StringBuffer:
老的,线程安全的(因为它的方法有synchronized修饰),效率低
可变的字符序列
父亲 AbstractStringBuilder
底层采用 char[] 存储数据 默认长度为16

StringBuilder:
    线程不安全的,效率高
    可变的字符序列               
    父亲 AbstractStringBuilder               
    底层采用 char[] 存储数据 默认长度为16*

StringBuilder&StringBuffer区别:
    StringBuffer 线程安全的  效率低                  
    StringBuilder 线程不安全的  synchronized  效率高

两者通用方法
    StringBuffer append(xx):拼接,追加
    StringBuffer insert(int index, xx):在[index]位置插入xx
    StringBuffer delete(int start, int end):删除[start,end)之间字符
        StringBuffer deleteCharAt(int index):删除[index]位置字符

    void setCharAt(int index, xx):替换[index]位置字符
    StringBuffer reverse():反转
    void setLength(int newLength) :设置当前字符序列长度为newLength
    StringBuffer replace(int start, int end, String str):替换[start,end)范围的字符序列为str
    int indexOf(String str):在当前字符序列中查询str的第一次出现下标
                  int indexOf(String str, int fromIndex):在当前字符序列[fromIndex,最后]中查询str的第一次出现下标
                 int lastIndexOf(String str):在当前字符序列中查询str的最后一次出现下标
                 int lastIndexOf(String str, int fromIndex):在当前字符序列[fromIndex,最后]中查询str的最后一次出现下标

    String substring(int start):截取当前字符序列[start,最后]
        String substring(int start, int end):截取当前字符序列[start,end)

    String toString():返回此序列中数据的字符串表示形式

同上一份

抽空整理

String部分

上一篇:springCloudGateway-使用记录


下一篇:LeetCode-199-二叉树的右视图