【非常详细的介绍了string的用法http://blog.csdn.net/zhangerqing/article/details/8093919】
String & SringBuffer
String 适用于字符串常量,一经创建则不能修改,StringBuffer适用于需要做许多操作的字符串。
【字符串的信息的获取】
1.length()
2.startsWith(str); & endsWith(str)
3.字符串的查找
查找字符串第一次出现的位置
indexOf(str);
public class Demo{ public static void main(String[] args) { String string = "this is a string ,start with this."; // boolean res = string.startsWith("this"); // System.out.println(res); // int index = string.indexOf("a"); System.out.println(index); } }
查找最后一次出现的位置
lastIndexOf(str);
public class Demo{ public static void main(String[] args) { String string = "this is a string ,start with this."; // boolean res = string.startsWith("this"); // System.out.println(res); int index = string.lastIndexOf("a"); System.out.println(index); } }
4.字符串的比较
是否相等 str1.equals(str2) str1.compareTo(str2) str1.equalsIgnoreCase(str2)
5.字符串的连接
concat()
【再此强调字符串的不变性】
通过一段代码说明问题:
package Test; public class Demo2{ public static void main(String[] args) { String string = "abc"; string+="efg"; System.out.println(string); } }
输出结果为:abcefg
在这个过程中创建了几个对象呢?太简单了,一个!呵呵,错了,两个!
当String = "abc"的时候,已经创建了一个对象,
string+="efg";
系统会抛弃原来的对象,重新开辟一段内存空间,string = “abcefg”;原来的对象空间将会被GC回收。
在定义一个string对象的时候,会先在string常量池中查找是不是已经存在要创建的对象,如果已经存在了,就直接将常量池中的对象的地址直接赋值给要创建的string引用;如果不存在,才会在重新创建。
package Test; public class Demo2{ public static void main(String[] args) { // String string = "abc"; // string+="efg"; // System.out.println(string); String str1 = "java"; String str2 = "blog"; String str3 = str1+str2; System.out.println(str3 == "javablog"); } }
结果:false
== 判断的是地址是不是相等。
equals 比较的是对象的内容。