在Java中字符串常量池一共分为两种:
- 静态常量池:是指(*.class)在加载的时候会自动将此程序中保存的字符串、普通的常量、类和方法等信息,全部进行分配。
- 运行时常量池:当一个程序(*.class)加载之后,有一些字符串内容是通过String对象的形式保存后在实现字符串连接处理,由于String对象的内容可以改变,所以此时称为运行时常量池。
例子:
package com.mydemo;
public class StringDemo {
public static void main(String args[]){
// 开辟新对象并入池
String strA = "字符串常量池";
// 使用“+”进行字符串连接,由于所有的内容都是常量,本质上表示一个字符串
// String strB = "字符" + "串" + "常量池"; // 直接赋值 // 判断结果:true
String temp = "串";
String strB = "字符" + temp + "常量池"; // 动态拼凑,temp为变量 // 判断结果:false
System.out.println(strA == strB);
}
}