zoukankan      html  css  js  c++  java
  • 字符串相关工具类

    字符串相关工具类

    String类

    1. String类
    2. 所属的包是java.lang包
    3. 找寻构造方法创建对象
      String str = "abc";//直接将字符串常量赋值给str (字符串常量池)
      String str = new String();//无参数构造方法创建空的对象
      String str = new String ("abc");//带String参数的构造方法创建对象
      String str = new String(byte[]);//将数组中的每一个元素转化成对应的char,组合成String
      String str = new String(char[]);//将数组中的每一个char元素拼接成最终的String
    4. String类型的特性
      String类中的不可变特性
      Private final char[] value;//存储String中的每一个字符
      final最终的不可改变的--->地址不让改变 数组的长度本身不可改变
      private私有的当前类中-->数组的内容也不能改变
    5. String类中常用的方法 20+
      boolena = equals(Object object);
      //继承Object重写啦 比较两个字符串的字面值是否相等
    6. 笔试中经常会考察大家关于String的特点

    StringBuffer

    StringBuilder

    1. 所属的包 java.lang包

    2. 继承AbstractStringBuilder间接继承Object实现接口Serializable,CharSequence,Appendable

      1. StringBuffer/StringBuilder没有compareTo方法
      2. StringBuffer/StringBuilder含有一个String没有的方法append();拼接
    3. 特性
      可变字符串 char[] value;动态扩容

    4. 对象的构建

           		 //无参数构造方法 构建一个默认长度16个空间的对象 char[]
              StringBuilder builder = new StringBuilder();
              //利用给定的参数 构建一个自定义长度空间的对象char[]
              StringBuilder builder = new StringBuilder(20);
              //利用带String参数的构造方法 默认数组长度:字符串长度+16个
              StringBuilder builder = new StringBuilder("abc");
      
    5. StringBuilder中最常用的方法

      最主要的方法
      stringBuilder.append();    频繁的拼接字符串的时候使用此方法 提高性能
      capacity();                获取字符串底层char[]的容量
      length();                  符串有效元素的个数(长度)
      setLength();							 手动设置有效元素个数
      
      String = stringBuilder.substring(2,5);      
      						截取从索引2开始到索引5截止(需要接受返回值才能看见截取出来的新字符串)
      StringBuilder = stringBuilder.delete(2,5);          删除索引2开始到索引5的字符
      						StringBuilder类中独有的方法String类没有
      						将start到end之间的字符串删掉   不用接受返回值就看到效果啦
      StringBuilder = deleteCharAt(int index);
      						String类中没有的方法
      						将给定index位置的某一个字符删除掉啦
      int = indexOf(String str[,int fromIndex]);
      int = lastIndexOf(String str[,int fromIndex]);
      						找寻给定的str在字符串中第一次出现的索引位置,带重载 则从某一个位置开始
      insert(int index,value)
      						将给定的value元素插入到index位置上,value可以是char、string等等
      replace(int start,int end,String str);
      						将start和end之间的部分替换成str
      						stringBuilder.replace(1,3,"yr");
      setCharAt(int index,char value);
      						将index位置的字符改成某一个字符
      reverse();	将StringBuilder中的字符串反转
      toString();	将StringBuilder对象 构建成一个string对象 并返回
      trimToSize();将数组中无用的容量去掉 变成length长度的数组
      

    总结:

    1. StringBuilder类不一定需要 是为了避免String频繁拼接修改字符串信息的时候才用的,底层数组是可变的,提高了性能

    2. 常用方法
      与String类不同的独有方法
      append() insert() delete() deleteCharAt() reverse()
      与String类相同的方法
      length() charAt() codePointAt() indexOf() lastIndexOf() substring() replace()名字相同 用法不一致
      不是很常用的方法
      ensureCapacity() capacity() setLength() trimToSize() setCharAt()

    3. String家族笔试中经常容易考察的知识点

      1. String所属的包 继承关系 实现接口

      2. String构建方式

      3. String对象内存结构
        字符串常量区 new对内存对象
        == equals()区别

      4. String不可变特性
        长度及内容

      5. String中常用的方法---与StringBuilder的区别
        concat();toUpperCase()

      6. String和StringBuilder的区别 | String和StringBuffer的区别
        String不可变字符串

        ​ JDK1.0
        ​ 有一个接口Comparable
        ​ 不可变体现在长度和内容
        ​ 有一些方法另一个没有 concat compareTo toUpperCase

        StringBuilder可变字符串

        ​ JDK1.5

        ​ 有一个接口Appendable

        ​ 可变字符串 没有final修饰 底层可以进行数组扩容

        ​ 有一些方法String没有 append() insert() delete() reverse()

      7. StringBuffer和StringBuilder的不同

        ​ StringBuffer早期版本1.0

        ​ StringBuilder后来的版本1.5

        ​ 方法使用几乎一致,通常早期版本都是线程安全的,安全性比较高,执行效率相对较低

        ​ 后期版本,线程非同步(安全),安全性比较低,执行效率相对较高

    Keep Clam and Carry Keen.
  • 相关阅读:
    .ascx
    *.ascx *.asax *.aspx.resx *.asax.resx是什么文件
    DNN Learning How to install 1
    LG7881 [Ynoi2006] rmpq【分块,分治】
    LG6783 [Ynoi2008] rrusq【扫描线,KDT】
    UOJ681【UR #22】月球列车【二进制,Trie】
    AGC056E Cheese【概率期望,dp】
    AGC055F Creative Splitting【双射转化,dp】
    CTT2022 游记
    NOIP2021 退役记
  • 原文地址:https://www.cnblogs.com/MrKeen/p/12082637.html
Copyright © 2011-2022 走看看