首页 > 其他分享 >常量池中的字符串仅是符号,第一次使用时才变为对象(加入到运行时常量池),可以避免重复创建字符串对象

常量池中的字符串仅是符号,第一次使用时才变为对象(加入到运行时常量池),可以避免重复创建字符串对象

时间:2023-09-19 13:14:29浏览次数:29  
标签:ab String 时才 串池 字符串 jdk6 常量

  • 常量池中的字符串仅是符号,第一次使用时才变为对象(加入到运行时常量池),可以避免重复创建字符串对象
 

intern()

JDK 1.8:将这个字符串对象尝试放入串池,如果 String Pool 中:

  • 存在一个字符串和该字符串值相等,就会返回 String Pool 中字符串的引用(需要变量接收)
  • 不存在,会把对象的引用地址复制一份放入串池,并返回串池中的引用地址,前提是堆内存有该对象,因为 Pool 在堆中,为了节省内存不再创建新对象
public static void main(String[] args) {
    String s = new String("a") + new String("b");//new String("ab")
    //在上一行代码执行完以后,字符串常量池中并没有"ab"

    String s2 = s.intern();
    //jdk6:串池中创建一个字符串"ab",把此对象复制一份
    //jdk8:串池中没有创建字符串"ab",而是创建一个引用指向 new String("ab"),将此引用返回

    System.out.println(s2 == "ab");//jdk6:true  jdk8:true
    System.out.println(s == "ab");//jdk6:false  jdk8:true
}

 

publicstaticvoidmain(String[] args) { Strings=newString("a") + newString("b");//new String("ab")//在上一行代码执行完以后,字符串常量池中并没有"ab"Strings2= s.intern(); //jdk6:串池中创建一个字符串"ab",把此对象复制一份//jdk8:串池中没有创建字符串"ab",而是创建一个引用指向 new String("ab"),将此引用返回 System.out.println(s2 == "ab");//jdk6:true jdk8:true System.out.println(s == "ab");//jdk6:false jdk8:true }

标签:ab,String,时才,串池,字符串,jdk6,常量
From: https://www.cnblogs.com/barry-xue/p/17714343.html

相关文章

  • Python字符串
    1.字符串的基本操作::::转义符操作:格式化操作:{name1="附件"name2="上课"print("%s的%s"%(name2,name1))}{print(f"{name2}的{name1}")}  2.字符串序列操作::::“容器”加“有序存储"-9-8-7-6-5-4-3 -2 -1  负索引h  e  l  l  o  y u......
  • 更改SQL Server sa密码、默认端口 以及ADO连接字符串指定端口号
    1、更改sa密码execsp_passwordnull,'000','sa'--将sa密码改为0002、更改SQLSERVER默认端口     (1)SqlServer服务使用两个端口:TCP-1433、UDP-1434。其中1433用于供SqlServer对外提供服务,1434用于向请求者返回SqlServer使用了那个TCP/IP端口。可以使用SQLServer的企业管......
  • 前端相关字符串
    Unicode是国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。Unicode只是一个符号集,它只规定了每个符号的二进制值,但是符号具体如何存储它并没有规定。因此,Unicode出现了多种存储方式,常见的有UTF-8、UTF-16、UTF-32,它们分别用......
  • 复习课7 常量
    一.导入我们之前就说过生活中是有很多变化与不变的量的,我们将变化的量称为变量,将不变的量称为常量常量在生活中也有很多,如:血型、性别(不考虑特殊情况)、身份证号,那么在C语言中有哪些常量呢?二.C语言中常量的分类字面常量const修饰的常变量#define定义的标识符常量枚举常量接下来我将为......
  • split将字符串转换为数组
    <p><iclass="tag"v-for="taginitem.tag.split(',')":key="tag.id">{{tag}}</i></p>split(',') ------->将字符串转换为数组......
  • 字符串转化为算术
    #字符串#39-6=?#"39-6=?"#定位到它文本,然后用字符串切割#他是字符串用空格切割,判断是否是数字#思路是首先获得这个式子,然后判断符合,最后算出结果,在然后把结果填入importre#要使用Python从字符串"a="39-6=?"中切割出数字和运算符,可以使用正则表达......
  • 不要使用count(列名)或count(常量)来替代count(*),count(*)就是SQL92定义的标准统计行
    慢SQL治理经验总结https://mp.weixin.qq.com/s/LZRSQJufGRpRw6u4h_Uyww慢SQL治理经验总结原创 药糖 大淘宝技术 2023-09-1816:20 发表于浙江 在过去两年的工作中,我们团队曾负责大淘宝技术的慢SQL治理工作,作为横向的数据安全治理平台,如何快速准确地发现部门内所有应用......
  • python 全角半角字符、字符串互转
    defis_chinese(uchar):"""判断一个unicode是否是汉字"""ifuchar>=u'\u4e00'anduchar<=u'\u9fa5':returnTrueelse:returnFalsedefis_number(uchar):"""......
  • 代码随想录算法训练营day11| ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复
    20.有效的括号卡哥democlassSolution{public:boolisValid(strings){if(s.size()%2!=0)returnfalse;stack<char>st;for(inti=0;i<s.size();i++){if(s[i]=='(')st.push('......
  • natsort.natsorted()-用于自然排序(natural sorting)字符串列表。
    参考:https://natsort.readthedocs.io/en/stable/api.html#natsort.natsorted语法格式natsort.natsorted(seq:Iterable[T],key:Optional[Callable[[T],Union[natsort.utils.SupportsDunderLT,natsort.utils.SupportsDunderGT,None]]]=None,reverse:bool=False,alg:......