字符串

百知教育学习 -胡鑫喆 -字符串

  • String

    • toCharArray() 转成字符数组
    • new String(char[] cs) 利用字符数组构造字符串
    • toUpperCase() /toLowerCase() 大小写转换
    • contains(String s) 判断s字串是否存在
    • startsWith(String s) 判断s字串是否开头
    • endsWith(String s) 判断字符串是否以s字串结尾
    • indexOf(String s) 返回s子串最早出现的下标
    • lastIndexOf(String s) 返回s字串最后出现的下标
    • replace(String s1,String s2) 将s1子串替换成s2子串
    • substring(int a,int b) 返回字符串中a下标到b小标的子串(包含a下标不包含bx下标)
    • length(String s) 长度
    • split(String s) 将字符串以s为分隔符,拆分为多个子串
    • trim() 去除字符串前后的回车与空格,字符串之间的不算
  • String内容不可变:我们可以利用串池去共享字符串对象

    字符串常量池是方法区中的一块特别存储区域。当需要创建一个字符串时,如果它的值在字符串常量池中已存在,那么常量池中的该字符串引用将被直接返回,而不会创建一个新的字符串对象返回其引用。

    • 声明字符串时优先使用 String s="abc" 而不是 String s=new String("abc")

      String s=new String("abc") 创建了两个对象 串池里先建一个abc除非已经有一个了 堆空间一个abc

      s3=s3.intern(); 释放掉堆空间里的字符串,改用串池里的

      String s="a"+"b"+"c"+"d"+"e"+"f"; 在编译时就完成了,s的式子不用运算

  • 字符串连接 StringBuilder类与String类的区别

    • string本身是不可改变的,它只能赋值一次,每一次内容发生改变,都会生成一个新的对象,然后原有的对象引用新的对象,而每一次生成新对象都会对系统性能产生影响,这会降低.NET编译器的工作效率

      字符串

    • StringBuilder类则不同,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充,这样,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能

      字符串