java基础要点:[3]字符串

2025-11-18 13:18:18

 1)indexOf(""):返回字符串中某字符的下标

  2)subString(1,3);//取字串  包前不包后

  3)trim():去掉字符串前后的空白

  4)subString(,uri.index("/",""));截取从哪儿到哪儿中间部分

  5)indexof(,,):从A开始包括,截取长度,到哪个字符

  6)endWith(“”):以什么为结尾的

  7)startWith(""):

  8)在java虚拟机中存在一个字符串池,保存着许多String对象,字符串池由String

  类维护,可调用initem()访问字符串池,java虚拟机在字符串池中查找是否存在

  一个值abc的对象,判断依据是String类equal(Object obj)方法的返回值,如果有

  不创建,返回已存在对象的引用;

   jvm在启动时会分配9个池空间,8种基本类型包装类+字符串常量池

   String s1="abc";   1个入池

   String s2="abc";    0个  池中已有一个

   String s3=new String("abc")   创建一个堆区

   String s4=new String("abc")    创建一个堆区

   String s5="abc"+"d"   abcd  1个入池

   String s6=s1+"d"   当出现变量时, 单独入池, “d”入池   2个

   String str=new String("abc"+"def")   2个

   String str=new String(s1+"def")    3个   s1def堆  def  

  9)静态字符串

    在java编译期间,凡是字面量和常量的运算,都会先运算出结果

    当字符串池中有String对象时,java会直接用,如果没有才创建

    String=char[]+操作(复制创建新对象)

    StringBuilder=char+对char操作(处理当前数组内容),变长字符序列

    StringBuilder内部的char[]数组内容可变,如果长度不够

    利用变长算法维护,自动扩容

    append():表示追加,但方法反复操作的同一个对象

    insert()和delete()表示插入和删除

    StringBuffer()线程安全的可变字符序列

    String s=s1+s2;相等于

    String s=new StringBuilder(s1).apend(s2).toString()

    StringBuffer()是早期提供的(jdk1.0),速度稍慢,线程安全

    StringBuilder()是java5以后提供的(jdk5.0),速度快,非线程安全

(共篇)上一篇:移位运算|下一篇:
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢