String类
String类的概述
概述
Java.lang.String类代表字符串,Java程序中的所有字符串文字,如“abc”都可以看做是String类的实例。
程序当中的所有双引号字符串,都是String类的对象。(没有new ,也是对象)。
字符串的特点:
- 字符串的内容永远不可改变。【重点】
- 正式因为字符串的内容永远不可改变,所以字符串是可以共享使用的。
- 字符串效果上相当于是chat[]字符串数组,但是底层原理是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方法区(method area),取而代之的是元空间(metaspace)
JDK1.8中字符串常量池和运行时常量池逻辑上属于方法区,实际上存储在堆内存当中。