Striing的实例化方式

1.方式一:通过字面量定义方式

String s1="JavaEE";
Strinng s2="javaEE";

此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中

2.方式二:通过new +构造器的方式

String s3=new String("javaEE");
String s4=new String("javaEE");

此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值

面试题:

String s=new String("abc");

用此方式创建对象,在内存中创建了几个对象?
两个:一是堆空间的new结构,另一个是char[]对应的常量池中的数据:abc

结论:
1.常量和常量的拼接结果在常量池中,且常量池中不会存在相同内容的常量
2.只要其中一个是变量,结果就在堆中

你可能感兴趣的:(字符串)