JAVA String学习笔记

String是一种特殊的对象(不同于8种基本数据类型)。String类的特殊性可以它的两个其他的类不具有的特点体现出来

  • 在创建一个String对象的时候,我们不仅可以通过和其他类类似的创建方式,通过new的方式创建,我们也可以直接通过赋值创建

    1
    2
    3
    String newStr1 = new String("content"); // 和其他对象类似的创建方式
    String newStr2 = "content";
    // String 特殊的创建方式

  • String可以直接进行+运算,达到字符串连接的效果

    1
    2
    3
    4
    String str3 = "One String";
    String str4 = " Another String";
    String str5 = str3 + str4;
    // str5 = "One String Another String"

另外一个需要注意的点:String可以为空,但是空字符串不代表null

1
2
3
4
String str6 = "";
String str7 = new String();
String str8 = null;
/* str6和str7一样,但和str8不一样 */

String作为一个对象,具有一个对象应该具有基本元素。String的field都是private的,所以我们也不需要知道他们的具体内容。String提供的method可以帮助我们实现很多对String的操作

  • char charAt(int i) 返回String在第\(i\)个位置的字符

  • int compareTo(String anotherString) 返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。(菜鸟教程

  • String concat(String str) 和加法运算符相同的效果

  • int indexOf(int ch) int indexOf(int ch, int fromIndex) int indexOf(String str) int indexOf(String str, int fromIndex)返回String中出现的第一个相应的参数字符的下标,fromIndex表示从此处开始搜索。对应的有int lastIndexOf(parameters)表示最后一个出现的字符下标

  • boolean isEmpty() 判断一个String是否为空,若是返回true。

  • String replace(char oldChar, char newChar) 将原本的字符串中的所有oldcharnewChar代替,返回替换后的字符串

  • String[] split(String regex, int limit)regex为界限分割String得到一个数组。参数int limit(optional)表示分割的上限次数(以前limit-1的regex进行分割,共分成limit个String),limit<=0表示无界限。

    e.g. 在下面这种情况中,|被编译器默认认为是或运算符, 所以我们需要用"\\|"进行区分

    1
    2
    3
    4
    5
    6
    String s=“ABC|DEF|GHI”;
    s.split(“|”)
    /*-> [ “A”, “B”, “C”, “|”, “D”, “E”, “F”, “|”, “G”, “H”, “I”];*/
    String s=“ABC|DEF|GHI”;
    s.split(“\\|”);
    /* -> [ “ABC”, “DEF”, “GHI”]; */
  • String substring(int beginIndex, int endIndex) 返回从beginIndex开始到endIndex(不包括)的substring。

  • String trim() 返回消除了所有空格之后的字符串

String一旦被创建就不能再更改(注:String.concat()和运算符"+"都会创建一个新的String对象而不是在原来的String基础上进行更改),所以Java提供了另一个类来实现String的更改

1
2
3
StringBuilder strbui = new StringBuilder("something ");
strbui.append("another thing ");
// strbui: something another thing

相比于concat和加法运算,使用StringBuilder的好处就是提高了效率

数字和字符串之间的转换

  • Integer与String转化

    • Integer.parseInt(str)str转化为对应的Integer

    • Integer转化为对应的字符串

      1
      2
      3
      String a = "" + 123;
      String a = Integer.toString(123);
      String a = String.valueOf(123);
  • Double与String转化

    • Double.parseDouble(str)str转化为对应的Double

    • Double转化为String使用String.valueOf(double d)

      1
      2
      double d = 11.01;
      String s = String.valueOf(d);