String类

    xiaoxiao2021-03-25  187

    Java中String类的常用方法: public char charAt(intindex) 返回字符串中第index个字符; public int length() 返回字符串的长度; public int indexOf(Stringstr) 返回字符串中第一次出现str的位置; public int indexOf(Stringstr,int fromIndex) 返回字符串从fromIndex开始第一次出现str的位置; public booleanequalsIgnoreCase(String another) 比较字符串与another是否一样(忽略大小写); public Stringreplace(char oldchar,char newChar) 在字符串中用newChar字符替换oldChar字符 public booleanstartsWith(String prefix) 判断字符串是否以prefix字符串开头; public booleanendsWith(String suffix) 判断一个字符串是否以suffix字符串结尾; public StringtoUpperCase() 返回一个字符串为该字符串的大写形式; public StringtoLowerCase() 返回一个字符串为该字符串的小写形式 public Stringsubstring(int beginIndex) 返回该字符串从beginIndex开始到结尾的子字符串; public Stringsubstring(int beginIndex,int endIndex) 返回该字符串从beginIndex开始到endsIndex结尾的子字符串 public String trim() 返回该字符串去掉开头和结尾空格后的字符串 public String[]split(String regex) 将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组

     

     

    注意点:

    String c = “blue”

    Stringb = “blue”

    两个指向的是同一块区域

    String s1 =null;

    String s2 = new String()

    这两个是不一样的,一个是null ,另一个是”\0”;

    String s3 = “您好!”

    String s2 = new String(s3);

    这里的s3 != s4了,因为这里的s4开辟了一个新的区域,内容是您好!

    所以 s3 == s4得到的是false

        S2 == “您好!”得到的也是false;

    String s1 = “ABC”

    String s2 = “XYZ”

    S1 = s1.concat(s2);

    我们都知道concat的意思是在s1后面接上s2得到一个新的String

    那么是原来的s1被替代了吗?

    当然不是!!

    是又开辟了一块新的空间,写入”ABCXYZ”,然后s1指向原来的现在这快区域!(但如果它只是s1.concat(s2);,,那么s1还是指向原来的ABC)

    并且原来的那块区域还是保留着的,为”ABC”

    但是如果是字符串调用toString() 的方法 , 并不会创建新的字符串对象,而是直接返回当前对象的引用

    在调用方法System.out.println 或 System.out.print 时,如果他们的参数不是字符串类型,一般会自动的调用方法toString()  ,

     

     

     

     

     

    那么这里主要的问题就是,如果想要修改s1,那么就得开辟一块新的空间出来,修改的越多,开辟的越多,那么有没有办法解决这个问题呢?

     

    Java爸爸给了我们一个stringbuffer的类,这个类与string不同的就是它能对自己本身进行修改。

     

    StringBuffer 呢,就是在他加入了内容以后,再额外添加16个空间

     

    String s1 = “YZR”

    String s2 = s1.append('D')      执行这个操作的以后,s2变成 了YZRD!!!1

    StringBuffer strb = new StringBuffer(s1);  ( append() )

    String放到StringBuffer里面以后就可以进行各种操作

    然后最后再转换回String类型( tostring()

    ==equals

    ==比较两个对象是不是同一个对象

    equals 是比较内容是否相同

    String str = ‘123’

    String str1 = ‘123’

    Str2 = new string(“123”)

     

    If(str2 == str)  判断出来是false

    If(str == str1)  判断出来是true

    If(str.equals(str1))  判断出来就是true

     

    length() capacity()

    length()是字符串的长度!

    capacity()是整个的容量

    String str = “123”

    StringBufffer strb = “123”

    str.length()         3;

    strb.length()       3;

    strb.capacity()     3+16; (本身要扩展16单位的容量)

     

     

     

    而且StringBuffer的速度要比String的速度快很多!

    转载请注明原文地址: https://ju.6miu.com/read-1666.html

    最新回复(0)