疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java中String类型


 

 
String类型是字符串类型。。
字符串一旦创建不可以在改变。“abc”字符串对象一旦创建,不可以再改成“abcd”
提升字符串的访问效率:在程序中使用了“缓存”技术。所以在java中所有使用“双引号”括起来的字符串都会在“字符串常量池”中创建一份。字符串常量池在方法区中被存储。
在程序执行过程中,如果用到某个字符串,例如:“abc”那么程序救护在字符串常量池中去搜索该字符串,如果没有找到则在字符串常量池中新建一个"abc"字符串,如果找到就直接拿过来用。(字符串常量池是一个缓存区,为了提高访问字符串的效率)
 
public class StringTest01{
     
    public static void main(String[] args){
         
        //创建一个"abc"字符串对象,该对象的内存地址,让s1变量保存。
        //s1是一个引用,s1指向 "abc" 对象.
        String s1 = "abc";
         
        //可以让s1重新指向吗?s1是局部变量,s1前边没有final,所以s1可以重新指向。
        //但是"def"字符串本身不可变.
        s1 = "def";
         
         
        String s2 = "Hello"; //在字符串常量池中新建一个"Hello"字符串对象,该对象不可变
        String s3 = "Hello"; //从字符串常量池中直接拿来用。
         
        System.out.println(s2==s3); //true
         
        //比较两个字符串是否相等,不能用"=="
        String s4 = new String("abc");
        String s5 = new String("abc");
         
        System.out.println(s4==s5); //false
         
        //比较两个字符串是否一致,必须使用String类提供的equals方法.
        System.out.println(s4.equals(s5)); //true
         
         
        //以下程序执行结束之后,会在字符串常量池中创建3个字符串对象
        //"aaa" "bbb"  "aaabbb"
        String s6 = "aaa";
        String s7 = "bbb";
        String s8 = s6 + s7;