java中除了8种基本类型之外,其余的皆属于引用数据类型,而String就属于引用数据类型的一种。它的默认值为null;
1.String类型的创建(声明定义):
注意:在创建时,创建为"",他代表为1个空的字符串。不是创建为null;
2.由上图可知,其有两种创建方式,一种直接赋值,一种通过创建对象的方式。虽然两种方式都可创建字符串,因为其String类存在常量池,导致两种创建方式有一定的差异性。
1.什么是String常量池:即在java中JVM存在一个Hash Table用来存放数据的特殊的内存空间。它用于保存在编译期间就已经确定的一些字符产常量,其加入了垃圾回收等操作,可以节省空间,提高效率,当新创建的字符串在常量池中存在,就不要再次浪费空间,重新创建。直接通过常量池中字符串对象的内存地址拿来使用。
2.使用字符串常量池的方法:
//直接使用双引号声明出来的String对象会直接存储在常量池中。比如
String info="";
3.与通过new关键字创建对象的差异:
如下图所示:在字符串中==代表比较内存地址是否一致,而String重写了Object类中的equals()方法用于比较内容是否一致。
1.当我们通过“=”去创建字符串对象时,若是内容一致,必然会直接使用常量池中已存在的字符串常量,所以其内存地址一致。而new关键字代表,在系统内存中去创建新的内存空间,不适用常量池中的数据,所以内存地址必然不一样。
2.但是其通过两种创建方式创建的字符串对象,若存放的内容一致的,代表其值相同。