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