最近遇到好几道有关String.intern()的题目,正巧在《深入理解Java虚拟机》一书中也见到了有关这个Native方法的讲解,因此总结一下。
首先先说一下String.intern()方法的作用(JDK1.6中相符合):String.intern()表示如果常量池(位于虚拟机中的方法区)中有这个字符串,则返回代表这个字符串的String对象。否则,就先将这个String对象“包含的字符串”添加到常量池,然后返回这个String对象(原来的String对象而非常量池中的,这个返回的String对象是在堆中的)。
String.intern()在JDK1.6和JDK1.7中实现方式还不一样.
JDK1.6中:String.intern()会把第一次遇见的字符串实例复制到常量池,而且返回的也是这个常量池中的字符串的引用。
JDK1.7中:只是在常量池中存储首次出现的字符串的实例的引用,然后返回的也是这个引用,这就导致了新的特性,跟上面所说的String.intern()的方法的作用描述不再相符合了,这就是新的JDK所带来的变化,也是String.intern()方法的现在的作用。
关于String.intern()
最新推荐文章于 2024-05-07 19:21:43 发布