String类的特点
1.String类对象的相等判断使用equals() 方法完成,“==”实现的是地址数值的比较。
2.字符串内容一旦声明则不可改变,String类对象内容的改变是依靠引用关系的变更实现的。
3.String类有两种实例化方式,使用直接赋值可以不产生垃圾空间,并且可以自动入池,不要使用构造方法完成。
String对象的创建
创建字符串有两种方式:两种内存区域(字符串池,堆)
1.” ” 引号创建的字符串即直接赋值在字符串池中
2.new,new创建字符串时首先查看池中是否有相同值的字符串,如果有,则拷贝一份到堆中,然后返回堆中的地址;如果池中没有,则在堆中创建一份,然后返回堆中的地址(注意,此时需要从堆中复制到池中,否则导致浪费池的空间)(如例1)
3.另外,对字符串进行赋值时,如果右操作数含有一个或一个以上的字符串引用时,则在堆中再建立一个字符串对象,返回引用;如String str2=str1+ “abc”;
public static void main(String[] args) {
String str = "Hello";
str = str + "World";
str += "!!!";
System.out.println(str);// HelloWorld!!!
}