讲师笔记,Java基础学习之路之day14——字符串常用方法

!!!String  字符串
    String s = "abc" 是一个String类的对象
    
    String非常常用,所以jdk对其做了优化 允许直接声明值,无需通过new创建对象
    
    class String{private final char value[];}
    String对象一旦被初始化不可改变

常用方法:
    int length()
        返回字符串的长度
    char charAt(int index)
        返回指定位置index出的字符char值
        
    int    indexOf(String str)
        返回指定str在字符串中第一次出现的位置
    int indexOf(String str, int fromIndex) 
        从fromIndex位置开始,获取str字符串在字符串中第一次出现的位置    
    int indexOf(int ch)
        返回指定ch字符 在字符串中第一次出现的位置
    int indexOf(int ch, int fromIndex) 
        从fromIndex位置开始,获取ch字符在字符串中第一次出现的位置
        
    int    lastindexOf(String str)
        返回指定str在字符串中最后一次出现的位置
    
    截取字符串功能:
    String    substring(int beginIndex) 
        从指定索引处的字符开始,直到此字符串末尾。
    String substring(int beginIndex,int endIndex)
        该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
    
    所有对字符串的操作 生成的是新字符串 原字符串的内容是无法修改的
    
    ----------------------------------------------------
    
    替换字符串功能:
    String replace(char oldChar, char newChar)
    用newChar新字符全部替换oldChar旧字符后产生新字符串,并没有修改原始字符串内容
    replace(CharSequence 旧字符串, CharSequence 新字符串)
    
    String toLowerCase() 字符串内容全部小写
    String toUpperCase() 字符串内容全部大写   
    
    String trim() 去掉字符串的前后空格
    
    String[] split(String regex) 按照指定表达式regex来分割字符串
    
    String concat(String str) 连接字符串
    
    boolean isEmpty() 
           当且仅当 length() 为 0 时返回 true。 
           
    boolean endsWith(String suffix) 
          测试此字符串是否以指定的后缀结束。 
    boolean startsWith(String prefix) 
          测试此字符串是否以指定的前缀开始。 
   
   ------------------------------------------------------
      转换功能:
      String 和 char[] 之间的转换
          String --> char[] : toCharArray()
          char[] --> String :  new String(char[] value)
      
      String 和 byte[] 之间的转换:
          String --> byte[] : 编码
              getBytes()
              使用平台默认字符集将String编码成字节数组
              getBytes(Charset charset) 
              使用指定的字符集进行编码
          byte[] --> String  : 解码
              new String(byte[] value)
              使用平台的默认字符集解码指定的 byte 数组
              String(byte[] bytes, Charset charset) 
              使用指定字符集解码
          
          字符集 charset:
              计算机只认识二进制,所以有个字模库(每个字符都有一个二进制与之对应)
              
              gb2312国标  汉字的专属编码格式 存储6k个字符
              gbk:gb2312的扩展  存储2w个字符
              一个字符占2个字节
              
              utf-8: unicode的扩展 , 是针对世界上全部字符的编码格式
              可变字符编码
              一个汉字占3个字节,常用的英文字母占一个字节
              
              utf-16     : utf-8的定长方案
              utf-16BE: 计算机中真正的字符集编码
              
          乱码的由来:不同的字符编码环境下,编码和解码不一致
          如果出现乱码的问题,要弄清楚源头的文件是什么编码格式
          今后项目中,如果有用到编码的地方 都用utf-8
          
      -----------------------------------------------
      
      String s1 = new String("abc");  产生2个对象
      String s2 = "abc";                   0
      String s3 = "ab"+"c";               0
      String s4 = "a";                   1
      String s5 = "bc";                   1
      String s6 = s4+s5;                   2
                                      (StringBuffer对象,通过toString()产生的String对象)
      // new StringBuffer()
          .append(s4).append(s5)
          .toString();
      
      没有上面的前提:
      String s = "ab"+"c" 产生1个对象  class文件里面就是"abc"
      
      -------------------------------------------------------
      
      正则表达式是什么
          是一些预定义的字符串,表示某种字符串的格式
          对字符串的格式进行控制
          
      boolean matches(String regex) 
          告知此字符串是否匹配给定的正则表达式。 
      
          一个字符:
              . 任何字符 
              \d 数字 
              \w 单词字符  a-zA-Z_0-9
          字符长度:
              {m,n}指定字符至少出现m次,但是不超过n次
              {m,} 出现至少m次
              {m}  恰好出现m次
          字符出现的次数:
              ? :0次或者1次
              * :0次或者多次
              + :1次或者多次
          
          [abc] : 匹配a或者b或者c中的一个字符
          [^abc]: 除了a,b,c以外的一个字符
              ^如果出现在[]中的表示非
              
          [a-z] : 一个小写字母
          [a-zA-Z] :一个任意字母
          [a-z&&[def]] :d、e 或 f 
              &&出现在[]中表示与
          [0-9]:表示任意一个数字
      
      --------------------------------------------------
      
      StringBuffer    可变的字符序列   
          StringBuilder用法和StringBuffer基本相同
      String 不可变的字符序列
          
          常用方法:
              StringBuffer append() :追加内容
              当对String进行反复的修改的时候,不建议使用String进行拼接字符串,
              而是使用StringBuffer和StringBuilder
      
      --------------------------------------------------
      1.给定一个字符串,前后中间各有一个空格,长度未知
          要求:去掉首尾空格,并且将大小写转换,实现字符串反转
          比如:" abcE gbDh " 要求转换为 "HdBG eCBA"
      
      2.使用正则表达式验证变量名是否符合规范
      
      3.String[] arr = {"aaa","bbb","ccc"} 连接操作
          
          public String join(String[] arr){
              按照“,”来进行连接
          }
          public String join(String[] arr,String pattern){
              按照pattern连接
          }
          
          join(arr); "aaa,bbb,ccc"
          join(arr,"#") "aaa#bbb#ccc"
          

猜你喜欢

转载自blog.csdn.net/u011189148/article/details/81417112