1 intern
1.1 string.intern()方法源码:
1.2 解释
intern() 返回一个字符串常量池对象
调用时,已包含对象,string直接被返回
没有对象,会被新建到池中返回
1.3 DEMO
public class StringPool58Demo {
public static void main(String[] args) {
String str1 = new StringBuffer("58").append("tongcheng").toString();
System.out.println(str1);
System.out.println(str1.intern());
System.out.println(str1 == str1.intern());
System.out.println();
String str2 = new StringBuffer("ja").append("va").toString();
System.out.println(str2);
System.out.println(str2.intern());
System.out.println(str2 == str2.intern());
}
}
输出:
58tongcheng
58tongcheng
true
java
java
false
System 源码:
对于注册本地的方法,是静态的初始化加载。
JAVA虚拟机将会调用initializeSystemClass 完成初始化的加载,以便于区别客户端。
若使用了java虚拟机自带的字段,看initializeSystemClass类的方法。
初始化这个类,在线程初始化完成后被调用
sun.misc.Version.init();代码进入,可以看出下方的代码有java的定义
源码分析
下载好源码
@@launcher_name@@引用。
上题出自 第三版书
参考文献