「Java SE」字符串


Java中和字符串相关类有以下3种——

  • String类
  • StringBuild类
  • StringBuffer类

String类

对象创建

  • 例程
    String s_1 = "Hyggge";
    String s_2 = s_1;
    String s_3 = new String("Czh");
    char[] s_4 = {'C', 'Z', 'H'};
    String s_5 = new String(s_4);
  • 需要注意的是,String类对象是不可变的(本质上用final修饰),如以下程序
    String a = "Hyggge"; 
    String a = "Czh"; 

    虽然程序最后a引用的对象是"Czh", 但是一开始创建的"Hyggge"对象并没有消失。相当于以下C++程序
    // C++
    string s_1 = "Hyggge";
    string &a = s_1;
    string s_2 = "Czh";
    string &a = s_2;

字符串连接

  • 第一种方法——使用concat()函数
    String a = "Hyggge is ";
    String b = a.concat("Czh");
    String c = "Hyggge is ".concat("Czh"); 
    
  • 第二种方法——使用+
    String a = "Hyggge is " + "Czh " + "!!!";

创建格式化字符串

  • 格式化输出和已通过printf和format实现。其中,format是String类中的静态方法。
    int age = 19;
    //method one
    System.out.printf("Hyggge's age is %d\n", age);
    //method two
    String s;
    s = String.format("Hyggge's age is %d\n", age);
    System.out.println(s);

String 类中的常用方法

  • int length() 字符串长度
  • boolean isEmpty() 检查字符串是否非空
  • int compareTo(String anotherString) 字符串比较(字典序)
  • int indexOf(int ch) 返回指定字符第一次出现处的索引
  • int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引
  • String concat(String str) 字符串连接(原对象不变,需要使用中间对象,严重消耗内存,不推荐使用
  • boolean equals(Object anObject)将字符串和一个对象进行比较
  • 其他方法

StringBuffer 和 StringBuilder 类

String 类不同的是,StringBufferStringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。他们的区别是——

  • StringBuffer 线程安全 StringBuilder 线程不安全
  • StringBuilder 相较于 StringBuffer 有速度优势(绝大多数情况下使用StringBuilder

对象创建(以StringBuilder类为例)

StringBuilder s = new StringBuilder(); 
StringBuilder s = new StringBuilder(10); //可以显式的规定大小
StringBuilder s = new StringBuilder("Hyggge"); //可以显式的规定大小

常用方法(以StringBuilder类为例)

  • StringBuilder append(String str) 将指定的字符串追加到此字符序列
  • ** StringBuilder insert(int offset, String str)** 将 str 参数的字符串插入此序列中
  • String substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列
  • StringBuilder reverse(String str) 翻转字符串
  • StringBuilder delete(int start, int end) 注意左闭右开
  • StringBuilder replace((int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符
  • String toString() 返回此序列中数据的字符串表示形式
  • int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。
  • int length() 返回长度(字符数)。
  • 其他方法

文章作者: Hyggge
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hyggge !
  目录