• 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,优点是可以选择性的选择需要的字符进行转换)

    • string常用的方法

      • 常见的

        • 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次

          • ^:

            • ^A:以A开头

          • $: 以xxx结尾

      • 替换

        • String replace(xx,xx):不支持正则

        • String replaceFirst(正则,value):替换第一个匹配部分

        • String repalceAll(正则, value):替换所有匹配部分

      • 拆分

        • String[] split(正则):按照某种规则进行拆分
    • 字符串对象的内存分析

      • 字符串拼接

        • 如果是 常量+常量 结果是字符串常量

        • 如果是 变量+变量 结果是创建一个StringBuilder对象 对字符串内容进行拼接

        • 如果是 变量+常量 结果是创建一个StringBuilder对象 对字符串内容进行拼接

        • img

        • 拓展:

          • 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():返回此序列中数据的字符串表示形式

  • 相关阅读:
    锁相环(PLL)的IP核调取及应用详解
    进阶项目(3)UART串口通信程序设计讲解
    基础项目(2)二选一数据选择器的设计
    读写储存器RAM IP核的调取及应用
    进阶项目(1)字符状态机讲解
    基础项目(1) 流水灯项目讲解
    只读储存器ROM IP核的调取及应用
    常见的关系运算符(移位运算符)
    常见的关系运算符(缩减运算符)
    乱七八糟
  • 原文地址:https://www.cnblogs.com/1463490Ya/p/15201248.html
Copyright © 2020-2023  润新知