Java基础:12. String类的概述和使用

  •  

    目录

    1 String类的概念

    2 常量池的概念

    3 常用的构造方法

    4 常用的成员方法

    5 正则表达式的概念

    6 正则表达式的规则

    7 正则表达式相关的方法

    8 String相等对比示例


    1 String类的概念

    • java.lang.String类用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象加以描述,如:"abc"。
    • 该类由final关键字修饰,表示该类不能被继承。
    • 从jdk1.9开始该类的底层不使用char[]来存储数据,而是改成 byte[]加上编码标记,从而节约了一些空间。
    • 该类描述的字符串内容是个常量不可更改,因此可以被共享使用。
    • 如:
      • String str1 = “abc”;
        • 其中"abc"这个字符串是个常量不可改变。
      • str1 = “123”;
        • 将“123”字符串的地址赋值给变量str1。
        • 改变str1的指向并没有改变指向的内容
  • 2 常量池的概念

    • 由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出现的字符串放入常量池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能。
      • String str1 = "hello";  // 1个对象  存放在常量池中
      • String str1 = new String("helo"); // 2个对象  1个在常量池中,1个在堆区
  • 3 常用的构造方法

    • ​​
      方法声明功能介绍
      String()使用无参方式构造对象得到空字符序列
      String(byte[] bytes, int offset,int length)

      使用bytes数组中

      下标从offset位置开始的length个字节来构造对象

      String(byte[] bytes)使用bytes数组中的所有内容构造对象
      String(char[] value, int offset, int count)

      使用value数组中

      下标从offset位置开始的count个字符来构造对象

      String(char[] value)使用value数组中的所有内容构造对象
      String(String original)根据参数指定的字符串内容来构造对象,新创建对象为参数对象的副本
  • 4 常用的成员方法

    • 方法声明
      功能介绍
      String toString ()
      返回字符串本
      byte[] getBytes ()
      将当前字符串内容转换为 byte 数组并返回
      char[] toCharArray ()
      用于将当前字符串内容转换为 char 数组并返回
      char charAt (int index)
      方法 charAt 用于返回字符串指定位置的字符
      int length ()
      返回字符串字符序列的长度
      boolean isEmpty ()
      判断字符串是否为空
      int compareTo (String anotherString)
      用于比较调用对象和参数对象的大小关系
      int compareToIgnoreCase (String str)
      不考虑大小写,也就是 'a' 'A' 是相等的关系
      String concat (String str)
      用于实现字符串的拼接
      boolean contains (CharSequence s)
      用于判断当前字符串是否包含参数指定的内容
      String toLowerCase ()
      返回字符串的小写形式
      String toUpperCase ()
      返回字符串的大写形式
      String trim ()
      返回去掉前导和后继空白的字符串
      boolean startsWith (String prefix)
      判断字符串是否以参数字符串开头
      boolean startsWith (String prefix, int toffset)
      从指定位置开始是否以参数字符串开头
      boolean endsWith (String suffix)
      判断字符串是否以参数字符串结尾
      boolean equals (Object anObject)
      用于比较字符串内容是否相等并返回
      int hashCode ()
      获取调用对象的哈希码值
      boolean equalsIgnoreCase (String anotherString)
      用于比较字符串内容是否相等并返回,
      不考虑大小写,如:'A' 'a' 是相等
      int indexOf (int ch)
      用于返回当前字符串中
      参数 ch指定的字符第一次出现的下标
      int indexOf (int ch, int fromIndex)
      用于从 fromIndex 位置
      开始查找 ch 指定的字符
      int indexOf (String str)
      在字符串中检索 str
      返回其第一次出现的位置,若找不到返回 -1
      int indexOf (String str, int fromIndex)
      表示从字符串的 fromIndex 位置
      开始检索 str第一次出现 的位置
      int lastIndexOf (int ch)
      用于返回参数 ch
      指定的字符最后一次出现的下标
      int lastIndexOf (int ch, int fromIndex)
      用于从 fromIndex 位置
      开始查找 ch 指定字符出现的下标
      int lastIndexOf (String str)
      返回 str 指定字符串最后一次出现的下标
      int lastIndexOf (String str, int fromIndex)
      用于从 fromIndex位置
      开始反向搜索的第一次出现的下标。
      String substring (int beginIndex, int endIndex)
      返回字符串中
      从下标 beginIndex (包括)开始
      到 endIndex (不包括)结束的子字符串
      String substring (int beginIndex)
      返回字符串中从下标 beginIndex(包括)开始
      到字符串结尾 的子字符串
    • 数字转换为String, str=""+123;
  • 5 正则表达式的概念

    • 正则表达式本质就是一个“规则字符串”,可以用于对字符串数据的格式进行验证,以及匹配、查找、替换等操作。该字符串通常使用^运算符作为开头标志,使用$运算符作为结尾标志,当然也可以省略。
  • 6 正则表达式的规则

    • 正则表达式
      说明
      [abc]
      可以出现 a b c 中任意一个字符
      [^abc]
      可以出现任何字符,除了 a b c 的任意字符
      [a-z]
      可以出现 a b c …… z 中的任意一个字符
      [a-zA-Z0-9]
      可以出现 a~z A~Z 0~9 中任意一个字符
      .
      任意一个字符(通常不包含换行符)【一个点】
      \d
      任意一个数字字符,相当于 [0-9]
      \D
      任意一个非数字字符
      \s
      空白字符,相当于 [\t\n\x0B\f\r]
      \x0B 垂直制表符
      \f 换页
      \r 回车不换行,相当于回到行起始位置
      \S
      非空白字符
      \w
      任意一个单词字符,相当于 [a-zA-Z_0-9]
      \W
      任意一个非单词字符
      X?
      表示 X 可以出现一次或一次也没有,也就是 0 ~ 1
      X*
      表示 X 可以出现零次或多次,也就是 0 ~ n
      X+
      表示 X 可以出现一次或多次,也就是 1 ~ n
      X{n}
      表示 X 可以出现恰好 n
      X{n,}
      表示 X 可以出现至少 n 次,也就是 >=n
      X{n m}
      表示 X 可以出现至少 n 次,但是不超过 m 次,
      也就是 >=n 并且 <=m

  • 7 正则表达式相关的方法

方法名称
方法说明
boolean matches (String regex)
判断当前正在调用的字符串
是否匹配参数指定的正则表达式规则
String[] split (String regex)
参数 regex 为正则表达式,
regex所表示的字符串为分隔符,
将字符串拆分成字符串数组
String replace (char oldChar, char newChar)
使用参数 newChar替换此字符串中
出现的所有参数 oldChar
String replaceFirst (String regex,
                              String replacement)
替换此字符串匹配
给定的正则表达式的第一个子字符串
String replaceAll (String regex,
                           String replacement)
将字符串中
匹配正则表达式 regex的字符串
替换成 replacement
  • 8 String相等对比示例

  • public class StringExamTest {
    
        public static void main(String[] args) {
    
            // 1.请问下面的代码会创建几个对象?分别存放在什么地方?
            //String str1 = "hello";  // 1个对象  存放在常量池中
            //String str1 = new String("helo"); // 2个对象  1个在常量池中,1个在堆区
    
            // 2.常量池和堆区对象的比较
            String str1 = "hello";  // 常量池
            String str2 = "hello";  // 常量池
            String str3 = new String("hello"); // 堆区
            String str4 = new String("hello"); // 堆区
    
            System.out.println(str1 == str2);       // 比较地址  true
            System.out.println(str1.equals(str2));  // 比较内容  true
            System.out.println(str3 == str4);       // 比较地址  false
            System.out.println(str3.equals(str4));  // 比较内容  true
            System.out.println(str2 == str4);       // 比较地址  false
            System.out.println(str2.equals(str4));  // 比较内容 true
    
            System.out.println("-----------------------------------------------");
            // 3.常量有优化机制,变量没有
            String str5 = "abcd";
            String str6 = "ab" + "cd";  // 常量优化机制  "abcd"
            System.out.println(str5 == str6); // 比较地址  true
    
            String str7 = "ab";
            String str8 = str7 + "cd"; // 没有常量优化
            System.out.println(str5 == str8); // 比较地址 false
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值