字符串的特点:

  • 字符串的内容永远不能改变【重点】。
  • 正式由于字符串的内容永远不能改变,所有字符串是可以共享使用的。
  • 字符串效果上相当于char[]字符 数组,然则底层原理是byte[]字节数组
    //第二点
    String str1 = "abc";//存储在堆的字符串常量池中
    String str2 = "abc";
    //内存当中"abc","abc"工具会被建立出来,而且"abc"工具只会被建立一次,内存当中只有一个"abc"工具被建立。
    //此时str1和str2可以共享一个"abc"工具
    String str3 = new String("abc");
    String str4 = new String("abc");//存储在堆中
    //备注:JDK1.7之后的JVM将【运行时常量池】从方式区去移除了,在java堆(heap)中开拓空间用来存储运行时常量池
    //JDK1.8最先,取消了java方式区(metho area),取而代之的时原空间(metaspace)
    //JDK1.8中字符串常量池和运行时常量池逻辑上属于方式区,实际上存储在堆内存当中。
  • 建立String字符串的常见3+1种方式
三种组织方式:
public String();建立一个空缺的字符串,不包罗任何内容
public String(char[] array);凭据字符数组的内容,来建立对应的字符串。
public String(byte[] array);凭据字节数组来建立对应的字符串
直接建立
String str= "abc";//右边直接用双引号
//备注:直接写上双引号,系统也会认定为字符串工具。