JDK1.8中String类的intern()方法学习
生活随笔
收集整理的這篇文章主要介紹了
JDK1.8中String类的intern()方法学习
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
jdk1.8字符串常量池是位于堆中;
在jdk1.8中使用如下指令時(shí)會(huì)同時(shí)在堆中和常量池(前提是常量池中還沒有該對象)中創(chuàng)建字符串對象,但是s是指向堆中。
String s = new String("HELLO");
如下方法會(huì)判斷常量池中是否存在s,若存在則返回常量池中的引用,s的指向不會(huì)發(fā)生更改;若不存在(但堆中存在s指向的對象),則在常量池中建立指向堆中對象的引用;
s.intern();
如下方法會(huì)在常量池中創(chuàng)建對象(注意和上一條對比),當(dāng)然前提是常量池中還沒有該對象;
String s = "你好";
如下方法并不會(huì)在常量池中創(chuàng)建“hello world”對象,只會(huì)在堆中創(chuàng)建,而堆中和常量池中都有“hello”和“world”對象;
String s = new String("hello") + new String("world");
如下方法只會(huì)在常量池中創(chuàng)建對象,堆中沒有;
String s = "hello" + "world";
?
總結(jié)
以上是生活随笔為你收集整理的JDK1.8中String类的intern()方法学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。