• 字符串详解


    一、字符串:String类

    二、创建String类的对象的两种方式:

    2.1.直接赋值法

      String str = "abc";

       首先看字符串常量池中是否有有"abc",如果有,则返回"abc"的内存地址给str,若没有,则创建"abc",返回"abc"的内存地址给str。

    2.2.new关键字创建对象法

       String str = new String("abc");

       首先在堆内存中创建一个String对象,首先检查字符串常量池中是否有"abc",如果有,则复制一份到堆内存中,如没有,则在字符串常量池中创建"abc",然后复制到对内存中,最终将指针str指向堆内存中创建的字符串对象。

    三、字符串类的方法

    3.1获取方法

    返回值类型 函数名 作用
    int length() 获取字符串的长度
    char chatAt(int index) 获取特定位置的字符
    int iindexOf(Stirng str) 获取特定字符的位置
    int  lastIndexOf(char ch) 获取最后一个字符的位置
    String str = "hello word";
    System.out.println("length():"+str.length());  //11
    System.out.println("indexOf():"+str.indexOf("l"));  //2
    System.out.println("lastIndexOf():"+str.lastIndexOf("l"));  //9
    System.out.println("indexOf():"+str.indexOf("p"));  //-1
    System.out.println("charAt():"+str.charAt("1"));  //e
    System.out.println("charAt():"+str.charAt("12"));  //java.lang.StringIndexOutBounsException

    3.2判断方法

    返回值类型 函数名 作用
     boolean endWith(String str) 是否以指定字符结束
     boolean  isEmpty()  是否长度为0 如:“” null V1.6
     boolean  contains(Char Sequences)  是否包含指定序列 应用:搜索
     boolean  equals(Object obj)  是否相等
     boolean  equalsIgnoreCase(String anotherString)
    忽略大小写是否相等
    String str = "";
    System.out.println("length():"+str.length()); 
    System.out.println("isEmpty():"+str.isEmpty());  //true
    
    String str = "hello java world";
    System.out.println("contains():"+str.contains("java"));  //true
    
    System.out.println("abc".equals("abc"));  //true,比较的是内容
    System.out.println(new String("abc").equals(new String("abc")));  //比较的是内容
    System.out.println(new String("abc").equals(new String("Abc")));  //false
    System.out.println(new String("abc").equalsIgnoreCase(new String("abc")));  //比较的是内容
    
    str = "Demo.java";
    System.out.println("endWith():"+str.endWith(".java")); //true

    3.3转换方法

    返回值类型 函数名 作用
    String new String(char[] value) 将字符数组转换为字符串
    String

    new String(char[] value, int offset, int count)

     
    Static String

    String.valueOf(char[] data)

    将字符数组转换为字符串
    Static String valueOf(char[] data, int offset, int count)  
    char[] toCharArray() 将字符串转换为字符数组
    String str = new String(new char[]{'h','e','l','l','o'});
    System.out.println(str);
    char[] chs = str.toCharArrray();
    for(int i = 0; i < chs.length ; i++){
       System.out.println(chs[i]);
    }
    
    byte[] bs = new byte[] {97,98,99};
    String str = new String(bs);
    System.out.println(str);
    
    byte[] bytes= str.getBytes();
    for(i = 0; i< bytes.length; i++){
       System.out.println(bytes[i]);
    }

    3.4其他方法

    返回值类型 函数名 作用
    String replace(char oldChar, char newChar) 替换
    String[] split(String regex) 以regex为分割符切割
    String substring(int beginIndex) 从指定索引出截取
    String substring(int beginIndex, int endIndex) 指定首尾截取字串
    String toUpperCase() 转大写
    String toLowerCase() 转小写
    String trim() 去除空格

    四、StringBuffer 字符串缓冲区类

    由于String是不可变的,当需要频繁修改字符串对象的场景下,应使用字符串缓冲区类

    特点:

    1、默认缓冲区的容量是16

    2、线程安全,同步,效率低

    方法

    4.1添加方法

    返回值类型 函数名 作用
    StringBuffer new StringBuffer("hello") 创建字符串缓冲区类
      append() 在缓冲区的尾部添加新的文本对象
      insert() 在指定的下标位置添加新的文本对象
    StringBuffer sb = new StringBuffer("jack");
    sb.append(true);
    sb.append('a');
    sb.append(97).append(34.0).append(new char[]{'o','o'});   // 链式编程
    System.out.println( sb.toString() );          // 输出缓冲区的中文本数据
    sb = new StringBuffer("jack");
    sb.insert( 2, "java" );                       // jajavack
    System.out.println( sb.toString() );  

    4.2查看

    返回值类型 函数名 作用
    String toString() 返回这个容器的字符串
    int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引
    String substring(int start) 从开始的位置开始截取字符串

    4.3修改

    返回值类型 函数名 作用
      replace(int start int endString str)

    使用给定 String 中的字符替换此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符

      setCharAt(int index char ch)

    指定索引位置替换一个字符

    4.5删除

    返回值类型 函数名 作用
      delete(int start,int end) s删除起始位置之间的字符,包头不包尾
      delete(0,,sb.length()) 清空缓冲区
      deleteCharAt(int index) 删除指定位置的元素

    4.6反序

    reverse() 把字符串反序输出。

  • 相关阅读:
    C# Log4.Net日志组件的应用系列(二)
    C# Log4.Net日志组件的应用系列(一)
    使用TFS+GIT实现分布式项目管理
    动软代码生成器使用教程
    SVN使用教程
    windows系统重装流程
    使用纯真IP库获取用户端地理位置信息
    使用扩展方法重写.NET底层架构
    使用单例模式创建模型仓储层的唯一调用
    使用SQL Delta.v5.1.1.98.破解版同步数据结构
  • 原文地址:https://www.cnblogs.com/mercuryji/p/string_methods.html
Copyright © 2020-2023  润新知