java trick--String.intern()
来源:互联网 发布:网络正常下载速度很慢 编辑:程序博客网 时间:2024/06/04 18:41
《深入理解java虚拟机》第二版中对String.intern()
方法的讲解中所举的例子非常有意思
不了解String.intern()的朋友要理解他其实也很容易,它返回的是一个字符串在字符串常亮池中的引用。直接看下面的demo
public class Main { public static void main(String[] args) { String str1 = new StringBuilder("计算机").append("软件").toString(); System.out.println(str1.intern() == str1); String str2 = new StringBuilder("ja").append("va").toString(); System.out.println(str2.intern() == str2); }}
两者输出的结果如下:
truefalse
我用的jdk版本为Oracle JDK7u45
。简单来说,就是一个很奇怪的现象,为什么java
这个字符串在类加载之前就已经加载到常量池了?
我在知乎找到了具体的说明,如下:
package sun.misc;import java.io.PrintStream;public class Version { private static final String launcher_name = "java"; private static final String java_version = "1.7.0_79"; private static final String java_runtime_name = "Java(TM) SE Runtime Environment"; private static final String java_runtime_version = "1.7.0_79-b15"; ...}
而HotSpot JVM的实现会在类加载时先调用:
public final class System{ ... private static void initializeSystemClass() { ... sun.misc.Version.init(); ... } ...}
是sun.misc.Version这个类在起作用
0 0
- java trick--String.intern()
- 【Java】【String】String.intern()
- Java String.intern()相关
- Java String.intern(相关)
- 深入java String.intern()
- java-String中的 intern()
- java-String中的 intern()
- java-String中的 intern()
- java-String中的 intern()
- java-String中的 intern()
- java-String中的 intern()
- java-String中的 intern()
- java String.intern()
- java-String中的 intern()(
- java-String中的 intern()
- java-String中的 intern()
- java-String中的 intern()
- java-String中的 intern()
- 二叉树前序、中序、后序遍历相互求法
- HotPot Project 2016.11.11更新
- 动规第一天.3
- java 乱码问题
- B-树,B+树,B*树详解
- java trick--String.intern()
- Android简易实战教程--第三十九话《Chronometer实现倒计时》
- java实现快速排序
- Map集合的四种遍历方式
- 修改select选中元素的值
- 167. Two Sum II - Input array is sorted
- LeetCode 400. Nth Digit
- SublimeText自带格式化代码功能 - reindent
- 动规第二天