String类

String的特性

  1. String声明为final的,不可被继承
  2. String实现了Serializable接口:表示字符串是支持序列化的
    实现了Comparable接口:表示String可以比较大小
  3. String在内部定义了final char[] value用于存储字符串数据
  4. String:代表不可变的字符序列。简称:不可变的特性。
  • ①当对字符串重新赋值时,需要重新指定内存区域赋值,不能使用原有的value赋值
  • ②当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能在原有的value赋值
  • ③当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域
  1. 通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中
  2. 字符串常量池中是不会存储相同内容的字符串的
public class StringTest {
    /*
    String实例化方式:
    方式一:通过字面量定义的方式
    方式二:通过new+构造器的方式
     */
    @Test
    public void Test2(){
        //此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。
        String s1="javaEE";
        String s2="javaEE";
        //通过new+构造器的方式:此时s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值
        String s3=new String("javaEE");
        String s4=new String("javaEE");
        System.out.println(s1==s2);//true

        System.out.println(s1==s3);//false
        System.out.println(s1==s4);//false
        System.out.println(s3==s4);//false
   
    }
    @Test
    public void Test1(){
        String s1="abc";//字面量
        String s2="abc";
        s1="hello";
        System.out.println(s1==s2);
        System.out.println(s1);//hello
        System.out.println(s2);//abc
        System.out.println("****************************");
        String s3="abc";
        s3+="def";
        System.out.println(s3);//abcdef
        System.out.println(s2);//abc
        System.out.println("****************************");
        String s4="abc";
        String s5 = s4.replace('a', 'm');
        System.out.println(s4);//abc
        System.out.println(s5);//mbc
        System.out.println("*****************************");

    }
/*结论:
1.常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量
2.只要其中有一个是变量,结果就在堆中
3.如果拼接的结果调用intern()方法,返回值就在常量池中

 */
@Test
    public void Test1(){
        String s1="abc";//字面量
        String s2="abc";
        s1="hello";
        System.out.println(s1==s2);
        System.out.println(s1);//hello
        System.out.println(s2);//abc
        System.out.println("****************************");
        String s3="abc";
        s3+="def";
        System.out.println(s3);//abcdef
        System.out.println(s2);//abc
        System.out.println("****************************");
        String s4="abc";
        String s5 = s4.replace('a', 'm');
        System.out.println(s4);//abc
        System.out.println(s5);//mbc
        System.out.println("*****************************");

    }
}

你可能感兴趣的:(常用类,java)