String:java9以前是对char数组进行了封装的对象,Java9成了byte数组char 是两个字节,如果用来存一个字节嘚字符有点浪费为了节约空间,Java 公司就改成了一个字节的byte来存储字符串这样在存储一个字节的字符是就避免了浪费。
创建方式:字符串常量方式、String构造函数方式
String str= "pingtouge"的形式,使用这种形式创建字符串时 JVM 会在字符串常量池中先检查是否存在该对象,如果存在返回该对象嘚引用地址,如果不存在则在字符串常量池中创建该字符串对象并且返回引用。使用这种方式创建的好处是:避免了相同值的字符串重複创建节约了内存。
String str = new String(“pingtouge”)的形式使用这种方式创建字符串对象过程就比较复杂,分成两个阶段首先在编译时,字符串pingtouge会被加入到常量结构中类加载时候就会在常量池中创建该字符串。然后就是在调用new()时JVM 将会调用String的构造函数,同时引用常量池中的pingtouge字符串
在堆内存Φ创建一个String对象并且返回堆中的引用地址。
1、new出来的会在堆内存中直接用双引号写出来的是在常量池里