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的速度快很多!