java--string

【非常详细的介绍了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 比较的是对象的内容。

原文地址:https://www.cnblogs.com/plxx/p/3344493.html